1

我正在尝试在一个文档中添加两页。这两个页面是从 HTML 生成的。

信息:使用 PDFsharp 的 HTML 渲染器,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)));

我尝试了几种方法,但最常见的错误是导入模式。这是最后一次测试,但没有成功。如何将 HTML 字符串生成的两个页面合并为 1 个文档中的 2 个页面并下载?

4

1 回答 1

3

这是有效的代码:

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;
    }
}

我将 PDF 文档保存到 aMemoryStream并打开它们以进行导入。这允许将页面添加到新的PdfDocument. 为简单起见,仅使用文档的第一页 - 根据需要添加循环。

于 2018-08-06T07:47:27.520 回答