使用 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有三种方式(不使用,动态使用,静态使用,默认是动态使用)