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

项目需使用到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

展开阅读全文

没有更多推荐了,返回首页