有谁知道是否可以使用 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
Flying Saucer 的主要目的是将符合规范的 XHTML 和 CSS 2.1 作为 Swing 组件呈现到屏幕上。虽然它最初旨在将标记嵌入桌面应用程序(例如 iTunes 音乐商店),但 Flying Saucer 也已扩展了 iText 的工作。这使得将 XHTML 呈现为 PDF 以及图像和屏幕变得非常容易。飞碟需要 Java 1.4 或更高版本。
我最终使用了来自 webSupergoo 的 ABCPdf。它工作得非常好,根据您上面的评论,它为我节省了大约 350 美元。再次感谢丹尼尔和布拉奇的评论。
最简单的方法是使用 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 文件,或在另一个呈现上下文中使用它(即,将其添加到您正在生成的其他文档中)。
前者使用 Flying Saucer 框架相对容易完成,可以在这里找到:https ://github.com/flyingsaucerproject/flyingsaucer
后者实际上是一个更全面的问题,需要进一步分类。使用 iText,您将无法(至少很简单)将 iText 元素(即Paragraph
、Phrase
等Chunk
)与生成的 HTML 结合起来。您可以通过使用ContentByte
'addTemplate
方法并为此模板生成 HTML 来解决此问题。
另一方面,如果您想在生成的 HTML 上加盖水印、日期等内容,您可以使用 iText 执行此操作。
所以底线:您不能轻易地将呈现的 HTML 集成到其他 pdf 生成上下文中,但您可以将 HTML 直接呈现为空白 PDF 文档。
使用 itext 库:
这是示例代码。它工作得很好:
String htmlFilePath = filePath + ".html";
String pdfFilePath = filePath + ".pdf";
// create an html file on given file path
Writer unicodeFileWriter = new OutputStreamWriter(new FileOutputStream(htmlFilePath), "UTF-8");
unicodeFileWriter.write(document.toString());
unicodeFileWriter.close();
ConverterProperties properties = new ConverterProperties();
properties.setCharset("UTF-8");
if (url.contains(".kr") || url.contains(".tw") || url.contains(".cn") || url.contains(".jp")) {
properties.setFontProvider(new DefaultFontProvider(false, false, true));
}
// convert the html file to pdf file.
HtmlConverter.convertToPdf(new File(htmlFilePath), new File(pdfFilePath), properties);
Maven 依赖项
<dependency>
<groupId>com.itextpdf</groupId>
<artifactId>itext7-core</artifactId>
<version>7.1.6</version>
<type>pom</type>
</dependency>
<dependency>
<groupId>com.itextpdf</groupId>
<artifactId>html2pdf</artifactId>
<version>2.1.3</version>
</dependency>
使用 iText 的 HTMLWorker
今年早些时候我需要 HTML 到 PDF 的转换时,我尝试了 Winnovative HTML 到 PDF 转换器的试用(我认为 ExpertPDF 也是同一个产品)。效果很好,所以我们在那家公司购买了许可证。之后我就不再深入探讨了。