将HTML文件转换为PDF

时间:2009-03-11 08:57:02

标签: java html pdf pdf-generation

我需要从现有的(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看起来很有前途。我会尽力去做。

感谢所有答案

8 个答案:

答案 0 :(得分:70)

Flying Saucer XHTML渲染器项目支持将XHTML输出到PDF。看看示例here

答案 1 :(得分:44)

您是否尝试过WKHTMLTOPDF

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

我们设置了一个小教程here

编辑(2017):

如果今天要建造一些东西,我就不会再去那条路了 但是会使用http://pdfkit.org/代替 可能会剥夺其所有nodejs依赖项,以便在浏览器中运行。

答案 2 :(得分:40)

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

答案 3 :(得分:3)

如果你有资金,没有什么比Prince XML

更能胜过this video shows

答案 4 :(得分:2)

  

有没有办法可以抓住   从互联网上呈现的页面   资源管理器渲染引擎并发送它   到PDF打印机工具?

这就是 ActivePDF 的工作方式,这很好意味着您知道自己会得到什么,并且它实际上具有合理的样式支持。

它也是我发现的少数几个软件包之一(几年前看)实际上支持各种分页CSS命令。


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

目前有一个新版本的Beta应该会好一些,但我实际上没有机会尝试一下,所以不知道它有多大改进。

答案 5 :(得分:1)

你可以使用带扩展名的无头火狐。跑步很烦人,但它确实产生了很好的效果。

查看this answer了解详情。

答案 6 :(得分:0)

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

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

答案 7 :(得分:0)

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

如果不立即需要输出文件,为了获得更好的可扩展性,最好让队列和一些后台进程从那里获取项目,转换它们然后存储在数据库或文件系统上。

通常的免责声明适用