将HTML文件转换为PDF

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

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

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

我还简短地看了一下使用Gecko渲染引擎的Java-API Jrex。

有没有办法从IE浏览器渲染引擎抓取渲染页面,并自动发送到PDF打印机工具? 我没有在Windows中的OLE编程经验,所以我不知道什么是可能的,什么不是。

你有想法吗?

编辑 :FlyingSaucer / iText的东西看起来很有希望。 我会尽力去做。

感谢所有的答案

飞碟 XHTML渲染器项目支持将XHTML输出为PDF。 看看这里的一个例子。

你试过WKHTMLTOPDF吗?

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

我们在这里设置了一个小教程

编辑(2017):

如果今天要建造一些东西,我就不会再走这条路了。
但是会使用http://pdfkit.org/代替。
可能将它的所有nodejs依赖关系剥离,在浏览器中运行。

看看iText ; 它是一个纯Java PDF工具包,支持从HTML中读取数据。 我最近在一个项目中使用它,当我需要从我们的内容管理系统中提取内容并导出为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(); 

如果你有资金, 这个视频显示没有什么比Prince XML 更棒的了

有没有办法从IE浏览器渲染引擎抓取渲染页面,并自动发送到PDF打印机工具?

这就是ActivePDF的工作原理,这很好,意味着你知道你会得到什么,而且它实际上有合理的样式支持。

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

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

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

你可以使用扩展名的无头Firefox。 运行起来非常烦人,但是确实产生了很好的结果。

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

如果你看问题的边栏,你会看到许多相关的问题…

在你的情况下,更简单的方法可能是安装一个PDF打印驱动程序,如PDFCreator,并打印页面到这个输出。

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

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

通常的免责声明适用