使用 TheArtOfDev.HtmlRenderer.PdfSharp 从 HTML 创建 PDF

Posted

技术标签:

【中文标题】使用 TheArtOfDev.HtmlRenderer.PdfSharp 从 HTML 创建 PDF【英文标题】:Create PDF from HTML using TheArtOfDev.HtmlRenderer.PdfSharp 【发布时间】:2017-05-28 18:42:00 【问题描述】:

我需要将格式良好的 html 字符串转换为 PDF 文档。

我发现 this DLL 应该可以满足我的需要,但它在格式化时不能正常工作。

That's我正在尝试转换的 HTML 代码,在浏览器上查看效果很好(我使用了 Bootstrap CSS,它已被正确引用为 cdn)。

但是一旦转换为 PDF,结果如下:

这就是我用来转换它的代码:

        string html = "";

        if (File.Exists(pathIN))
        
            html = File.ReadAllText(pathIN);
        

        PdfDocument pdfDocument = new PdfDocument();
        PdfDocument pdf = PdfGenerator.GeneratePdf(html, PageSize.A4, 60);
        pdf.Save(pathOUT);

有人有什么建议吗?

【问题讨论】:

也许您应该尝试将 html 编成适合 A4 的大小。您是否尝试过从浏览器将其打印为 PDF?结果如何? 效果很好link 可能库无法正确呈现。您是如何构建 html 的?它是一个简单的表格还是你使用大量的 CSS? 它是使用bootstrap制作的,here你可以找到整个html源码 我无法让这个 nuget 包与引导样式一起使用。我最终选择了 wkhtmltopdf,从那以后就再也没有回头。 【参考方案1】:

在使用 HtmlRenderer/PdfSharp 和 Bootstrap 控制布局时,我也遇到了这个问题。

虽然这不合常理,但我还是使用了表格进行布局。鉴于目标 (pdf) 显然是一个固定宽度,响应式不是必需的。

【讨论】:

【参考方案2】:

尝试使用https://wkhtmltopdf.org,非常适合引导页面。

【讨论】:

【参考方案3】:

我知道这有点晚了,但这可以帮助某人 bootstrap 的问题在于对齐列使用 float: left 和 pdfsharp 无法读取此属性,而是使用 display: inline-block 并以像素为单位定义宽度。

【讨论】:

【参考方案4】:

为了避免对其他人造成无用的努力,即使使用 display: inline-block 来定义宽度,它也不适用于像 Table 这样的 Bootstrap。桌子的右侧总是被修剪,尺寸不适合我的字母大小。

【讨论】:

以上是关于使用 TheArtOfDev.HtmlRenderer.PdfSharp 从 HTML 创建 PDF的主要内容,如果未能解决你的问题,请参考以下文章

在使用加载数据流步骤的猪中,使用(使用 PigStorage)和不使用它有啥区别?

今目标使用教程 今目标任务使用篇

Qt静态编译时使用OpenSSL有三种方式(不使用,动态使用,静态使用,默认是动态使用)

MySQL db 在按日期排序时使用“使用位置;使用临时;使用文件排序”

使用“使用严格”作为“使用强”的备份

Kettle java脚本组件的使用说明(简单使用升级使用)