HTML到PDF - 使用PdfSharp和HtmlRenderer分页

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了HTML到PDF - 使用PdfSharp和HtmlRenderer分页相关的知识,希望对你有一定的参考价值。

我尝试使用PdfSharp和htmlRenderer将HTML转换为PDF。这是代码的一部分:

private byte[] CreateHtmlContent()

    string htmlContent = File.ReadAllText(@"htmlExample.txt");

    using (MemoryStream ms = new MemoryStream())
    
        PdfDocument pdfDocument = new PdfDocument();
        PdfDocument pdf = PdfGenerator.GeneratePdf(htmlContent, PdfSharp.PageSize.A4, 60);
        pdf.Save(ms);
        res = ms.ToArray();
    
    return res;

除了分页符,一切正常。在某些页面上,我的结果就像在这张图片上

HTML page break

有可能解决这个问题吗? HTML内容是简单的html,只包含标题和段落,没有其他标签。我对iTextSharp没有这个问题,但在这个项目中我必须使用PdfSharp和MigraDoc。

答案

当我在github上发现这个拉取请求时,我遇到了类似的挑战并解决了它:https://github.com/ArthurHub/HTML-Renderer/pull/41

您可以设置custom-css-property

td  page-break-inside: avoid; 

在你想要的所有元素或选择器(td,p,.my-class等)上控制分页。

如果希望库控制某些元素的分页,则可以使用值“auto”

td  page-break-inside: auto; 

在运行文本中还有一个页面中断示例。

另一答案

这有点晚了,但我遇到了同样的问题。问题是GeneratePdf调用上设置的边距。删除它,它很好。

    PdfDocument pdf = PdfGenerator.GeneratePdf(htmlContent, PdfSharp.PageSize.A4);
另一答案

如果您不使用表,也可以通过添加适当的DIV标记来解决此问题。

foreach (DataRow row in group)
            
                HTMLoutput += "<div style=\"page-break-inside: avoid\"> ";
                HTMLoutput += "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.";
                HTMLoutput += "</div>";
            
另一答案

您可以在Nuget(1.5.1-beta1)中使用prerelase版本,然后:

td page-break-inside: avoid;

以上是关于HTML到PDF - 使用PdfSharp和HtmlRenderer分页的主要内容,如果未能解决你的问题,请参考以下文章

使用 PDFSharp 从 HTML 模板生成 PDF 并发送到浏览器

使用包含在 HTML 中的外部 CSS 类的 PdfSharp 从 HTML 片段创建 PDF

PDFsharp 保存到 MemoryStream

使用 PdfSharp 组合可填写的 Pdf 表单

如何使用 PDFsharp .NET 库将 PDF 页面导出为图像?

如何在保留书签的同时向现有 pdf 添加附加页面? (PDFSharp等)