将 HTML 文件转换为 PDF 文件

我需要自动生成一个 PDF 文件从现有的(X) HTML 文档。输入文件(报告)使用一种相当简单的、基于表的布局,因此可能不需要支持真正花哨的 JavaScript/CSS 内容。

正如我习惯于在 Java 中工作一样,一个可以很容易地在 Java 项目中使用的解决方案更可取。不过,它只需要在 Windows 系统上运行。

一种可行的方法是使用 CSS2XSLFO和 Apache FOP 来创建 PDF 文件,但这种方法不能产生高质量的输出(至少不能开箱即用)。我遇到的问题是,当 CSS 属性被很好地转换时,表格布局非常混乱,文本从表格单元格中流出。

我还快速浏览了 Jrex,这是一个用于使用 Gecko 呈现引擎的 Java-API。

有没有一种方法可以从 Internet Explorer 渲染引擎中获取渲染页面,然后自动将其发送到 PDF 打印机工具?我没有在窗口中进行 OLE 编程的经验,所以我不知道什么是可能的,什么是不可能的。

你有办法吗?

243878 次浏览

如果你有资金,没有什么能比得上 Prince XML作为 这段视频显示

您可以使用带有扩展名的无头 Firefox。开始跑步是相当烦人的,但是它确实产生了很好的效果。

查看 这个答案了解更多信息。

飞碟 XHTML 渲染器项目支持将 XHTML 输出为 PDF。

看看 IText,它是一个纯 Java PDF 工具包,支持从 HTML 中读取数据。我最近在一个项目中使用它,当我需要从 CMS 中提取内容并导出为 PDF 文件时,它非常简单。对 CSS 和样式标记的支持非常有限,但是它可以毫无问题地呈现表(尽管我从未设置过列宽)。

从 HTML 中创建一个 PDF 是这样的:

Document doc = new Document(PageSize.A4);
PdfWriter.getInstance(doc, out);
doc.open();
HTMLWorker hw = new HTMLWorker(doc);
hw.parse(new StringReader(html));
doc.close();

如果你看看你的问题的侧栏,你会看到许多相关的问题..。

在您的上下文中,更简单的方法可能是安装类似 PDFCreator的 PDF 打印驱动程序,并将页面打印到此输出。

有没有办法 从互联网上提供的网页 浏览器渲染引擎,并发送它 自动转到 PDF 打印机工具?

这就是 译自: 美国《科学》杂志网站(http://www.ActivePDF.com)原文地址: http://www.ActivePDF.com的工作原理,这意味着您知道将得到什么,并且它实际上具有合理的样式支持。

它也是我发现的少数几个支持各种分页 CSS 命令的软件包之一(当我回顾几年前的时候)。


不幸的是,ActivePDF 软件非常令人沮丧——因为它必须在后台启动 IE 浏览器才能进行转换,所以转换速度非常慢,而且也不是特别稳定。

有一个新的版本,目前在测试,这应该是更好的,但我实际上还没有机会尝试,所以不知道它有多大的改进。

你试过 WKHTMLTOPDF吗?

它是一个简单的 shell 实用程序,是 WebKit 的一个开源实现,两者都是免费的。

我们设置了一个小的教程 给你

编辑(2017) :

如果今天是为了建造什么东西,我不会再走那条路了。
但会使用 http://pdfkit.org/代替。
可能会剥离它所有的 nodejs 依赖项,在浏览器中运行。

Amyuni WebkitPDF 可以与 JNI 一起使用,作为仅适用于 Windows 的解决方案。这是一个 HTML 到 PDF/XAML 转换库,免费用于商业和非商业用途。

如果不立即需要输出文件,为了获得更好的可伸缩性,最好有一个队列和几个后台进程从中获取项目,然后将它们转换并存储在数据库或文件系统中。

通常的免责声明适用