Note that there are some explanatory texts on larger screens.

plurals
  1. POHow to add images to pdf with template and concat of pages
    text
    copied!<p>I'm struggling to insert images on a multi-page PDF. To create several pages I'm using PdfConcatenate, and it works. I get to add pages of my template perfectly. The problem starts when I try to add images. It just doesn't load them.</p> <p>Here's the code that works to add images:</p> <pre><code> string pdfTemplate = @"Tools\template.pdf"; string targetPdfPath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.DesktopDirectory), fileName + ".pdf"); FileStream output = new FileStream(targetPdfPath, FileMode.Create); PdfConcatenate pdfConcatenate = new PdfConcatenate(output); PdfReader pdfReader = new PdfReader(pdfTemplate); MemoryStream memoryStream = getMemoryStream(output); PdfStamper pdfStamper = new PdfStamper(pdfReader, output); int cardIndex = 1; foreach (Registry reg in registries) { setFields(reg, pdfStamper, cardIndex); if (cardIndex == 4) { pdfConcatenate.AddPages(pdfReader); pdfReader = new PdfReader(pdfTemplate); pdfStamper = new PdfStamper(pdfReader, output); cardIndex = 1; } else { cardIndex++; } } //if (cardIndex != 1) // pdfConcatenate.AddPages(pdfReader); //make the form no longer editable pdfStamper.FormFlattening = true; pdfStamper.Close(); pdfReader.Close(); //pdfConcatenate.Close(); </code></pre> <p>If use MemoryStream for PdfStamper and uncomment these lines:</p> <pre><code>//if (cardIndex != 1) // pdfConcatenate.AddPages(pdfReader); //pdfConcatenate.Close(); </code></pre> <p>I get it to add pages, but without images.</p> <p>Any idea of what is wrong?</p> <blockquote> <p><strong>SOLUTION: (Thanks to @mkl)</strong></p> </blockquote> <pre><code> string pdfTemplate = @"Tools\template.pdf"; string targetPdfPath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.DesktopDirectory), fileName + ".pdf"); FileStream output = new FileStream(targetPdfPath, FileMode.Create); PdfConcatenate pdfConcatenate = new PdfConcatenate(output); PdfReader pdfReader = new PdfReader(pdfTemplate); MemoryStream memoryStream = new MemoryStream(); PdfStamper pdfStamper = new PdfStamper(pdfReader, memoryStream); int cardIndex = 1; foreach (Registry reg in registries) { setFields(reg, pdfStamper, cardIndex); if (cardIndex == 4) { pdfStamper.FormFlattening = true; pdfStamper.Close(); PdfReader tempReader = new PdfReader(memoryStream.ToArray()); pdfConcatenate.AddPages(tempReader); memoryStream = new MemoryStream(); pdfReader = new PdfReader(pdfTemplate); pdfStamper = new PdfStamper(pdfReader, memoryStream); cardIndex = 1; } else { cardIndex++; } } if (cardIndex != 1) { pdfStamper.FormFlattening = true; pdfStamper.Close(); PdfReader tempReader = new PdfReader(memoryStream.ToArray()); pdfConcatenate.AddPages(tempReader); tempReader.Close(); } pdfStamper.Close(); pdfReader.Close(); pdfConcatenate.Close(); </code></pre>
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload