1. 程式人生 > >java實現html轉pdf,支援中文,css以及中文換行

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