17

我尝试使用 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 分页符

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

4

5 回答 5

20

当我在 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; }

还有一个在运行文本中分页的示例。

于 2016-06-15T10:40:17.250 回答
5

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

    PdfDocument pdf = PdfGenerator.GeneratePdf(htmlContent, PdfSharp.PageSize.A4);
于 2017-04-01T01:18:08.617 回答
1

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

td { page-break-inside: avoid; }

于 2019-04-10T16:07:36.863 回答
0

如果您不使用表格,也可以通过添加适当的 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>";
            }
于 2019-01-04T20:04:16.600 回答
0
    table{
    page-break-inside: avoid;    
}

当我使用这个 CSS 时,我遇到了这个问题。

在此处输入图像描述

那我做了什么?我也刚设置

table{
border:none;
}

如果您还想显示特定表格的边框,您可以使用内联 CSS 或使用特定表格 ID 设置边框。

这是使用 pdfsharp 生成的 pdf 的最终结果。

在此处输入图像描述

于 2021-09-17T07:16:36.913 回答