在 ASP.NET 中将 HTML 转换为 PDF 时保持 CSS 样式[关闭]

Posted

技术标签:

【中文标题】在 ASP.NET 中将 HTML 转换为 PDF 时保持 CSS 样式[关闭]【英文标题】:Maintain CSS styling when converting HTML to PDF in ASP.NET [closed] 【发布时间】:2010-09-29 18:07:16 【问题描述】:

我正在使用 ITextSharp 将 html 页面转换为 PDF。

但是,ITextSharp 会直接打印 STYLE 声明中的 CSS,即使以编程方式添加也会忽略样式表,并且只侦听某些内联样式(例如 font-sizecolor,但不侦听 background-color)。

ITextSharp 是否缺少某些东西,或者是否有更好(且免费)的方式来进行这种转换?

提前致谢,

【问题讨论】:

【参考方案1】:

为什么不使用在线 API?有很多可用的,而且它们工作得很好,这让你担心你的核心工作,而不是如何正确呈现 PDF :)

你提到了一些“免费”的东西。这取决于您的使用情况,但大多数服务一开始都提供免费转换,范围从 50 到 250(甚至更多)。也许对你来说就足够了?

然后,您所要做的就是使用您的 HTML 数据(或链接)向服务发出基本的 POST 请求,然后您会得到一个 PDF 作为响应。

以下是将 HTML 转换为 PDF 的 API 列表(不详尽):

PDFShift HTML2PdfRocket Web2PDFConvert PDFonline ...(还有更多:))

【讨论】:

PDFShift 链接似乎失效了。 谢谢你,我已经修复了链接!【参考方案2】:

ABCpdf 提供了两个 HTML 渲染引擎。一种是基于系统上安装的 MSHTML 版本。另一个基于 FireFox Gecko 渲染引擎。

因此,如果您想要一组特定的功能,则有足够的操作空间。这是一个非常真实的世界。

就质量而言,我只想说,在尝试了很多不同的替代方案后,我们确实让很多人选择了 ABCpdf。

我在 ABCpdf .NET 软件组件上工作,因此我的回复可能包含基于 ABCpdf 的概念。这只是我所知道的。 :-)

【讨论】:

值得一提的是它是一个商业组件。事实上,该网站在这件事上令人困惑 - 说它是免费的,然后说它是共享软件。【参考方案3】:

iText / iTextSharp 中的 HTML / CSS 支持是 very basic。这不是将 html 转换为 pdf 的正确工具。 请查看以下解决方案:

Create screenshot of the page with Watin-like tool http://blog.taiki.be/index.php/2008/07/generating-screenshots-of-webpages-using-net/ http://www.codegod.de/WebAppCodeGod/Screenshot-of-Webpage-with-ASP-NET-AID398.aspx

这些将 html 呈现为图像。然后您可以使用 iTextSharp 将它们插入您的 PDF。

否则你可以尝试转换 HTML -> XSL-FO -> PDF,但包括 CSS 是另一回事。

【讨论】:

【参考方案4】:

试用 PDF Duo .NET 转换器。如果您需要特殊功能,可以申请支持。

http://www.duodimension.com/html_pdf_asp.net/downloads/html_pdf_net.zip

【讨论】:

【参考方案5】:

看看 WKHTMLTOPDF。它是开源的,基于 webkit 并且是免费的。

我们写了一个小教程here。

【讨论】:

这是否可以用 c# 编程...我只看到命令行用法?! 有一个 C 绑定库,理论上应该可以使用 P/Invoke 从 C# 中使用,但我还没有成功:github.com/bamccaig/WkHtmlToPdfDflat。我也尝试过编写一个普通的 C 程序(甚至来自 Linux)来直接测试 C 绑定,但即使这样也失败了:code.google.com/p/wkhtmltopdf/issues/detail?id=614。 这就是我的选择。但它有一些严重的性能问题(似乎会减慢整个 AppDomain 的速度,因此需要按计划或定期重启的短期应用程序)。 @MattMitchell 您在哪个操作系统上运行它?我们在 Ubuntu Server 上没有看到这个问题。 @Mic - Win7 + IIS7(.5?)。我忽略了提到我正在使用 Pechkin 包装器 (github.com/gmanny/Pechkin),这可能会有所贡献(其他人在那里报告了类似的问题,但我没有深入研究这个问题以找出原因)。随着时间的推移,渲染速度会显着减慢,但由于渲染并不是最快的开始(并且似乎完全失败或间歇性超时),我现在在我的数据库中使用缓存的渲染报告并让计划的作业定期生成报告.尽管这里和那里有一些陷阱,但渲染质量很高。

以上是关于在 ASP.NET 中将 HTML 转换为 PDF 时保持 CSS 样式[关闭]的主要内容,如果未能解决你的问题,请参考以下文章

在 ASP.net 中将 BMP 转换为 PDF 的最简单方法是啥

在 ASP.NET 中将 MS Word 文档转换为 PDF [关闭]

在 ASP.NET Core 中将 html 导出为 pdf

在 ASP.net Core 中将对象转换为 Json

如何在 ASP.NET 中将文件路径转换为 ​​URL

在 ASP.NET 中将具有小数语言中性的价格值转换为整数