您的位置:首页 > Web前端 > CSS

java实现html转pdf,支持中文,css以及中文换行

2015-12-30 14:40 1616 查看
项目需使用到html转pdf功能,在网上搜了很多,综合了不少大神的方法,现在这里做一个标记,以免自己以后忘记了。

java代码

import java.io.File;
import java.io.FileOutputStream;
import java.io.OutputStream;

import org.xhtmlrenderer.pdf.ITextFontResolver;
import org.xhtmlrenderer.pdf.ITextRenderer;

import com.lowagie.text.pdf.BaseFont;

public class IText {

public static void main(String[] args)throws Exception {

String inputFile = "E:/workspace/PDF/WebContent/WEB-INF/signfileInfo.html";
String outputFile = "E:/workspace/PDF/WebContent/WEB-INF/signfileInfo.pdf";

OutputStream os = new FileOutputStream(outputFile);
ITextRenderer renderer = new ITextRenderer();
String url = new File(inputFile).toURI().toURL().toString();

renderer.setDocument(url);

// 解决中文支持问题
ITextFontResolver fontResolver = renderer.getFontResolver();
fontResolver.addFont("C:/Windows/Fonts/SIMSUN.TTC", BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED);
//解决图片的相对路径问题
renderer.getSharedContext().setBaseURL("file:///E:/workspace/PDF/WebContent/WEB-INF/");
renderer.layout();
renderer.createPDF(os);

os.flush();
os.close();
System.out.println("转换完成!");
}
}


html代码需要严格规范,所有标签都要有对应的/>进行关闭

记得用html包围,

开始的时候没有用这个,导致了一个麻烦的问题,还查了好久才发现。

为了支持中文,不仅要在java代码中引入字体文件,还需要在html中引用

body {

font-family: SimSun;

}

原先的core-renderer.jar不支持中文换行功能,有人修改了源码

中文换行包

所用的其他几个jar包分别为:

iText-2.0.8.jar

iTextAsian.jar

iTextAsianCmaps.jar
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: