1

I am trying to add two pages in one document. These two pages are generated from HTML.

Info : HTML Renderer for PDF using PDFsharp, HtmlRenderer.PdfSharp 1.5.0.6

            var config = new PdfGenerateConfig
        {
            PageOrientation = PageOrientation.Portrait,
            PageSize = PageSize.A4,
            MarginBottom = 0,
            MarginLeft = 0,
            MarginRight = 0,
            MarginTop = 0
        };
            string pdfFirstPage = CreateHtml();
            string pdfsecondPage = CreateHtml2();   
            PdfDocument doc=new PdfDocument();
            doc.AddPage(new PdfPage(PdfGenerator.GeneratePdf(pdfFirstPage, config)));
            doc.AddPage(new PdfPage(PdfGenerator.GeneratePdf(pdfsecondPage, config)));

I tried few ways, but the most given error is Import Mode. This is the last test, but it is not successful .How can I combine two pages generated from HTML strings as 2 pages in 1 document and download it?

Alican Kablan
  • 379
  • 5
  • 15

1 Answers1

2

Here is code that works:

static void Main(string[] args)
{
    PdfDocument pdf1 = PdfGenerator.GeneratePdf("<p><h1>Hello World</h1>This is html rendered text #1</p>", PageSize.A4);
    PdfDocument pdf2 = PdfGenerator.GeneratePdf("<p><h1>Hello World</h1>This is html rendered text #2</p>", PageSize.A4);

    PdfDocument pdf1ForImport = ImportPdfDocument(pdf1);
    PdfDocument pdf2ForImport = ImportPdfDocument(pdf2);

    var combinedPdf = new PdfDocument();

    combinedPdf.Pages.Add(pdf1ForImport.Pages[0]);
    combinedPdf.Pages.Add(pdf2ForImport.Pages[0]);

    combinedPdf.Save("document.pdf");
}

private static PdfDocument ImportPdfDocument(PdfDocument pdf1)
{
    using (var stream = new MemoryStream())
    {
        pdf1.Save(stream, false);
        stream.Position = 0;
        var result = PdfReader.Open(stream, PdfDocumentOpenMode.Import);
        return result;
    }
}

I save the PDF document to a MemoryStream and open them for import. This allows to add the pages to a new PdfDocument. Only the first page of the documents is used for simplicity - add loops as needed.

  • First thank you for your answer.I have tried the first one doesn't work.The second one throw exception and say " An item with the same key has already been added" at here doc.Save(ms2, false);.I think it is about PdfDictionary because clone returns PdfDictionary – Alican Kablan Aug 06 '18 at 11:19
  • You are the king awesome endeavour.I am thankful to you :) – Alican Kablan Aug 07 '18 at 02:24