随着互联网的发展,越来越多的企业和个人开始将自己的文档、资料以电子化的形式进行保存和分享。而在这些电子文档中,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的详细内容。