将HTML文件转换为PDF [关闭]

问题

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

由于我习惯于使用Java,因此最好能够在java项目中轻松使用。但它只需要在Windows系统上工作。

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

我还快速浏览了Jrex,一个使用Gecko渲染引擎的Java-API。

有没有办法从Internet Explorer渲染引擎中获取渲染页面并自动将其发送到PDF-Printer工具?我没有windows中的OLE编程经验,所以我不知道什么是可能的,什么不是。

你有好主意吗?

编辑:FlyingSaucer / iText看起来很有前途。我会尽力去做。

感谢所有的答案


#1 热门回答(65 赞)

Flying SaucerXHTML渲染器项目支持将XHTML输出为PDF。看一下examplehere


#2 热门回答(40 赞)

你试过377788649吗?

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

我们设置了一个小教程here
编辑(2017):
如果今天要建造一些东西,我就不会再去那条路了。
但是会使用http://pdfkit.org/而不是。
可能会剥夺其所有nodejs依赖项,以便在浏览器中运行。


#3 热门回答(38 赞)

查看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();