Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/387.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 将HTML文件转换为PDF_Java_Html_Pdf_Pdf Generation - Fatal编程技术网

Java 将HTML文件转换为PDF

Java 将HTML文件转换为PDF,java,html,pdf,pdf-generation,Java,Html,Pdf,Pdf Generation,我需要从现有(X)HTML文档自动生成PDF文件。输入文件(报告)使用相当简单的、基于表的布局,因此可能不需要支持真正花哨的JavaScript/CSS内容 因为我习惯于使用Java,所以最好是一个可以在Java项目中轻松使用的解决方案。不过,它只需要在windows系统上工作 一种可行但不能产生高质量输出(至少是开箱即用)的方法是使用、和ApacheFop来创建PDF文件。我遇到的问题是,虽然CSS属性转换得很好,但表格布局却非常混乱,文本从表格单元格中流出 我还简要介绍了Jrex,一个用于使

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

因为我习惯于使用Java,所以最好是一个可以在Java项目中轻松使用的解决方案。不过,它只需要在windows系统上工作

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

我还简要介绍了Jrex,一个用于使用Gecko渲染引擎的Java API

是否有办法从internet explorer渲染引擎获取渲染页面,并将其自动发送到PDF打印机工具?我没有在windows中进行OLE编程的经验,所以我不知道什么是可能的,什么是不可能的


你有什么想法吗?

如果你有资金,没有什么比使用无头firefox和扩展版更好的了。跑步很烦人,但它确实能产生很好的效果

查看更多信息。

XHTML渲染器项目支持将XHTML输出到PDF。请看一个例子。

签出;它是一个纯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();

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

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

有没有办法抓住这个机会 来自internet的呈现页面 浏览器渲染引擎并发送它 自动安装PDF打印机工具

这就是的工作原理,这意味着您知道将得到什么,并且它实际上具有合理的样式支持

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


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

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

你试过了吗

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

我们已经设置了一个小教程

编辑(2017):

如果它是今天建造的,我就不会再走这条路了。
但是会使用它来代替。
可能会剥离它的所有nodejs依赖项,以便在浏览器中运行。

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

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


通常的免责声明适用

谢谢您的帮助性回答。我不认为ActivePDF是真正合适的,因为它的价格,但很高兴知道这样的东西存在。GrabzIt的HTML到PDF API:以同样的方式工作,它在浏览器中呈现HTML,然后创建PDF,这确保有更准确的PDF转换。对于直接的HTML页面到PDF转换,这比我见过的任何东西都好,无论是免费的还是商业的。它在非Mac操作系统上工作吗?@Eran,我们在linux上使用它。我想有一个windows版本too@Mic是的,也有一个Windows版本。在Windows XP(版本0.9.9)上进行了测试,效果非常好。另外,不需要在机器上安装管理员权限。如果您正在为Prince寻找更便宜的替代品,请尝试DocRaptor.com。它使用Prince作为引擎。如果你想更便宜,但有更多的选择,试试看-它使用webkit和用户真正的WYSIWIGIt的AGPL,似乎比GPL更差,你需要开源,即使你只提供PDF,iText是服务器端。@Eran,只需使用最后一个非AGPL版本(com.lowagie:iText:2.1.7 in Maven).HTMLWorker在较新版本的IText中被弃用,取而代之的是XMLWorker;但是,CSS支持在这两种情况下都很差(请参阅),不足以满足我的需要。相反,飞碟是完美的。你可以使用HTMLWorker上的LGPL版本,它支持非常简单的HTML文档,有基本元素,没有CSS。它太有限了,没有用处。但是,如果需要并行地将动态页面转换为pdf,那么最近的iText html2pdf工作得非常好,听起来不是一个非常可扩展的解决方案。如果有几个请求通过,导致使用FF进行转换,那么您的服务器将丢失一些GIG内存,只用于处理几个转换后的页面。这将使您的服务器向DOS开放。更好但类似:(根据pdf具有真实文本,而不是光栅化)我最近创建了一个Java库,可以将xhtml转换为pdf文档。目前的版本并不先进,但是如果您的xhtml模板很简单,这个库可能会很方便。我认为应该使用浏览器的功能来进行翻译。请看,我一直在使用包含西里尔字母的html生成pdf。除了略去的西里尔字母外,一切都很好。有人有这样的问题吗?@krisiliev: