随着互联网的发展,越来越多的企业和个人开始将自己的文档、资料以电子化的形式进行保存和分享。而在这些电子文档中,PDF 格式无疑是其中最为流行和通用的格式之一,因为它可以不受操作系统和应用程序的影响,在不同平台上保持以相同的方式显示,同时也不容易进行修改。
然而,我们有时候需要将一些 HTML 页面或者 Java 程序输出的内容转为 PDF 格式,这时候就需要用到一些专业的工具和技术。本文通过讲解 Java 语言如何利用一些库和框架实现 HTML 和 Java 转 PDF 的功能,来介绍这一过程的具体操作步骤和思路。
一、使用 Flying Saucer 将 HTML 转 PDF
Flying Saucer 是一款 Java CSS 渲染引擎,专门用于将 XHTML、XML 以及 CSS 样式表转换成 PDF 或者图片格式。它提供了一个简单易用的 API,能够以超级字体和CSS3等功能在 PDF 中渲染出完整而高质量的页面。
1、引入 Flying Saucer 的依赖库
在 pom.xml 文件中添加依赖如下所示:
<dependency>
<groupId>org.xhtmlrenderer</groupId>
<artifactId>flying-saucer-pdf</artifactId>
<version>9.1.20</version>
</dependency>
2、使用 ITextRenderer 对象将 HTML 转成 PDF
通过如下代码创建一个模板并填入 HTML 内容:
// DOM解析器
DocumentBuilder builder = DocumentBuilderFactory.newInstance().newDocumentBuilder();
// 创建一个Model用于存储转换后的文档
Document document = builder.newDocument();
// 读取html内容并转换为文档树
StringReader reader = new StringReader("要转化为PDF的html格式内容");
InputSource source = new InputSource(reader);
// 获取根元素
Element root = document.getDocumentElement();
// 将html输入文档树种
Node node = document.importNode(root, true);
// 将html根元素加入文档树中
document.appendChild(node);
// 转化为PDF
ITextRenderer renderer = new ITextRenderer();
renderer.setDocument(document, null);
renderer.layout();
OutputStream out = new FileOutputStream(pdfUrl);
renderer.createPDF(out);
二、使用 iText 将 Java 对象转 PDF
除了将 HTML 转化成 PDF 外,我们还可以通过 iText 库将 Java 对象转化为 PDF 文件。iText 是一款 Java PDF 操作库,提供了产生 PDF 格式文件的能力和操作 API。
1、引入 iText 依赖
在 Maven 中添加 iText 依赖库,如下所示:
<dependency>
<groupId>com.itextpdf</groupId>
<artifactId>itextpdf</artifactId>
<version>5.5.11</version>
</dependency>
2、创建 PDF 文档对象
// 创建pdf文件对象
Document document = new Document(PageSize.A4);
// 文件输出流
OutputStream outputStream = new FileOutputStream("test.pdf");
// 将文件流作为输出对象
PdfWriter.getInstance(document, outputStream);
// 打开文件
document.open();
// 向文件中添加段落,代码省略
// 关闭文件
document.close()
3、向文档中添加内容
如下代码可以将 Java 对象添加到 PDF 中:
// 添加文字
Font font = new Font();
font.setStyle(Font.BOLD);
font.setSize(18);
Paragraph paragraph = new Paragraph("Hello World!", font);
document.add(paragraph);
// 添加表格
PdfPTable table = new PdfPTable(3);
table.addCell("Candidate ID");
table.addCell("Candidate Name");
table.addCell("Status");
for(int i=0;i<10;i++) {
table.addCell("00"+i);
table.addCell("Candidate "+i);
table.addCell("Selected");
}
document.add(table);
4、输出 PDF 文件
最后,通过文件输出流将 PDF 文件输出:
// 文件输出流
OutputStream outputStream = new FileOutputStream("test.pdf");
// 将文件流作为输出对象
PdfWriter.getInstance(document, outputStream);
由此可见,iText 提供了丰富的 API,可以用于创建和操作 PDF 文档对象,而 Flying Saucer 则能够很好地处理复杂的 CSS 样式和 XHTML 标签,将 HTML 页面转变为 PDF 文件。相信利用这两个工具,你会更加地方便地将 HTML 和 Java 程序内容转化为 PDF 文件。
以上就是java html 转pdf的详细内容,更多请关注编程网其它相关文章!