使用iText将HTML转换为PDF
有谁知道是否有可能使用iText将HTML页面(url)转换为PDF?
如果答案是“否”,那么也不错,因为我不会浪费自己的时间去尝试解决问题,而只是花费在我知道的许多组件之一上:)
预先感谢您的回应!
我想这正是你要找的
http://today.java.net/pub/a/today/2007/06/26/generating-pdfs-with-flying-saucer-and-itext.html
http://code.google.com/p/flying-saucer
飞碟的主要目的是将符合规范的XHTML和CSS 2.1作为Swing组件呈现在屏幕上。 虽然它最初是为了将标记embedded桌面应用程序(比如iTunes音乐商店),但飞碟已经扩展了iText的工作。 这使得将XHTML渲染为PDF以及图像和屏幕非常容易。 飞碟需要Java 1.4或更高版本。
我最终使用webSupergoo的ABCPdf。 它工作得很好,约350美元,根据您的意见,节省了我的时间和小时。 再次感谢Daniel和Bratch的评论。
最简单的方法是使用pdfHTML。 这是一个iText7插件,可以将HTML5(+ CSS3)转换为pdf语法。
代码非常简单:
HtmlConverter.convertToPdf( "<b>This text should be written in bold.</b>", // html to be converted new PdfWriter( new File("C://users/mark/documents/output.pdf") // destination file ) );
要了解更多信息,请访问http://itextpdf.com/itext7/pdfHTML
你的问题的答案实际上是双重的。 首先你需要指定你打算如何处理呈现的HTML:把它保存到一个新的PDF文件中,或者在另一个渲染上下文中使用它(即把它添加到你正在生成的其他文档中)。
前者是相对容易使用飞碟架构,可以在这里find: https : //github.com/flyingsaucerproject/flyingsaucer
后者实际上是一个更加全面的问题,需要进一步分类。 使用iText,您将无法(至less是平凡的)将iText元素(即Paragraph
, Phrase
, Chunk
等)与生成的HTML结合在一起。 你可以通过使用ContentByte
的addTemplate
方法并为此模板生成HTML来解决这个问题。
另一方面,如果你想用水印,date之类的东西戳生成的HTML,你可以使用iText来做到这一点。
所以底线:你不能在其他pdf生成上下文中将渲染的HTML细分,但是你可以直接把HTML渲染成一个空白的PDF文档。
使用iText的HTMLWorker
例
当我今年早些时候需要HTML到PDF的转换时,我试用了Winnovative HTML to PDF Converter(我认为ExpertPDF也是同样的产品)。 它工作得很好,所以我们在该公司买了一个许可证。 那之后我就不深究了。