Java使用Flying Saucer实现HTML代码生成PDF文档

1、需要的jar包:org.xhtmlrenderer.flying-saucer-pdf-itext5,itext.itext,Maven依赖如下:

 1 <dependency>
 2 <groupId>org.xhtmlrenderer</groupId>
 3 <artifactId>flying-saucer-pdf-itext5</artifactId>
 4 <version>9.0.7</version>
 5 </dependency>
 6 <dependency>
 7 <groupId>itext</groupId>
 8 <artifactId>itext</artifactId>
 9 <version>1.3</version>
10 </dependency>

2、中文支持

由于HTML代码中存在中文,需要添加中文支持,需要把需要的字体文件添加到项目中

3、转换PDF主代码

 1 /**
 2 * HTML代码转PDF文档
 3 *
 4 * @param content 待转换的HTML代码
 5 * @param storagePath 保存为PDF文件的路径
 6 */
 7 @Override
 8 public void parsePdf(String content, String storagePath) {
 9 FileOutputStream os = null;
10 try {
11 File file = new File(storagePath);
12 if(!file.exists()) {
13 file.createNewFile();
14 }
15 os = new FileOutputStream(file);
16
17 ITextRenderer renderer = new ITextRenderer();
18 //解决中文支持问题
19 ITextFontResolver resolver = renderer.getFontResolver();
20 resolver.addFont("/static/font/ARIALUNI.TTF", BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED);
21 renderer.setDocumentFromString(content);
22 // 解决图片的相对路径问题,图片路径必须以file开头
23 // renderer.getSharedContext().setBaseURL("file:/");
24 renderer.layout();
25 renderer.createPDF(os);
26
27 } catch (DocumentException e) {
28 e.printStackTrace();
29 } catch (IOException e) {
30 e.printStackTrace();
31 }finally {
32 if(null != os) {
33 try {
34 os.close();
35 } catch (IOException e) {
36 e.printStackTrace();
37 }
38 }
39 }
40 }

4、如果从文件中读取HTML代码,需要使用InputStream进行读取,不要使用FileReader读取,不知道为什么,使用FileReader读取的内容解析会错误

1 StringBuilder content = new StringBuilder();
2 byte[] bys = new byte[1024];
3 int len;
4 in = new BufferedInputStream(new FileInputStream(htmlFilePath));
5 while ((len = in.read(bys)) != -1) {
6 content.append(new String(bys, 0, len));
7 }
时间: 2024-11-05 05:41:33

Java使用Flying Saucer实现HTML代码生成PDF文档的相关文章

Java实现HTML代码生成PDF文档

1.IText实现html2pdf,速度快,纠错能力差,支持中文(要求HTML使用unicode编码),但中支持一种中文字体,开源. 2.Flying Sauser实现html2pdf,纠错能力差,支持多种中文字体(部分样式不能识别),开源. 3.PD4ML实现html2pdf,速度快,纠错能力强,支持多种中文字体,商业. (一)IText 测试案例:TestIText.java 依赖jar包下载 :iText-2.0.8.jar.iTextAsian.jar(支持中文) 下面只是一个小的测试案

java实现从url路径中下载pdf文档到本地

package com.cellstrain.icell.util; import java.io.*;import java.net.*; public class DownloadPdf { /** * 从网络Url中下载文件 * @param urlStr * @param fileName * @param savePath * @throws IOException */ public static void downLoadByUrl(String urlStr,String fil

Flying Saucer实现html转pdf(一些问题,持续更新)

Flying Saucer实现html转pdf(及一些问题,持续更新) 关于FlyingSaucer的使用官网上有详细的介绍. 官网地址: https://today.java.net/pub/a/today/2007/06/26/generating-pdfs-with-flying-saucer-and-itext.html#the-problem-with-pdfs 中国人在使用FlyingSaucer将Html转换成PDF的过程中有如下问题: l 中文不显示的问题 l <td>内容过长

java导出pdf文档

java导出pdf文档,多是iText实现的,可以创建pdf文档,并向文档写入内容. 1 导入包:itext-2.0.6.jar       itext必须使用的包. iTextAsian.jar      向pdf写入中文必须的包. 2 代码: package com.exp.pdf; import java.awt.Color; import java.io.FileOutputStream; import com.lowagie.text.Document; import com.lowa

Java生成PDF文档(表格、列表、添加图片等)

需要的两个包及下载地址: (1)iText.jar:http://download.csdn.net/source/296416 (2)iTextAsian.jar(用来进行中文的转换):http://download.csdn.net/source/172399 代码如下: 1 import java.awt.Color; 2 import java.io.FileOutputStream; 3 import com.lowagie.text.Cell; 4 import com.lowagi

Java实现web在线预览office文档与pdf文档实例

https://yq.aliyun.com/ziliao/1768?spm=5176.8246799.blogcont.24.1PxYoX 摘要: 本文讲的是Java实现web在线预览office文档与pdf文档实例, 1.首先我们需要找到可以把office转换成pdf的方法,查找资料发现有openoffice这一软件可以把office转换成pdf,这一软件先下载下来,然后记住自己安装的在那个位置.然后在cmd环境下进入安装目录的program目 云计算 云服务器ECS 大数据 建站 备案 文档

java操作office和pdf文件java读取word,excel和pdf文档内容

在平常应用程序中,对office和pdf文档进行读取数据是比较常见的功能,尤其在很多web应用程序中.所以今天我们就简单来看一下Java对word.excel.pdf文件的读取.本篇博客只是讲解简单应用.如果想深入了解原理.请读者自行研究一些相关源码. 首先我们来认识一下读取相关文档的jar包: 1. 引用POI包读取word文档内容 poi.jar 下载地址 http://apache.freelamp.com/poi/release/bin/poi-bin-3.6-20091214.zip 

java将office文档pdf文档转换成swf文件在线预览

java将office文档pdf文档转换成swf文件在线预览 第一步,安装openoffice.org   openoffice.org是一套sun的开源office办公套件,能在widows,linux,solaris等操作系统上执行. 主要模块有writer(文本文档),impress(演示文稿),Calc(电子表格),Draw(绘图),Math(公式),base(数据库) 笔者下载的是openoffice.org 3.3.0.下载完直接安装即可.      但是,我们还需要启动openof

利用Java动态生成 PDF 文档

利用Java动态生成 PDF 文档,则需要开源的API.首先我们先想象需求,在企业应用中,客户会提出一些复杂的需求,比如会针对具体的业务,构建比较典型的具备文档性质的内容,一般会导出PDF进行存档.那么目前最佳的解决方案,你可能会想到 iText ,对没错... iText+(Velocity / Freemarker)可以实现.不过据我熟悉,iText本身提供的HTML解析器还是不够强大,许多HTML标签和属性无法识别,更悲催的是简单的CSS它不认识,排版调整样式会让你头大的.不要失望,接下来