Html 轉 PDF
- 使用 flying-saucer 插件來完成
- 導入flying-saucer依賴
<dependency>
<groupId>org.xhtmlrenderer</groupId>
<artifactId>flying-saucer-pdf</artifactId>
<version>9.0.8</version>
</dependency>
- java 代碼實現
/**
* @param inputFile 你的html 路徑
* @param outFile 生成PDF的路徑
* @return
*/
public static Boolean HtmlCovertPdf(String inputFile,String outFile){
FileOutputStream os = null;
try {
os = new FileOutputStream(outFile);
ITextRenderer renderer = new ITextRenderer();
ITextFontResolver fontResolver = renderer.getFontResolver();
//處理中文 fontResolver.addFont("simhei.ttf", BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED);
String url = new File(inputFile).toURI().toURL().toString();
renderer.setDocument(url);
renderer.layout();
renderer.createPDF(os);
return true;
} catch (Exception e) {
e.printStackTrace();
return false;
} finally {
try {
os.close();
System.out.println("aa");
} catch (IOException e) {
e.printStackTrace();
}
}
}
- 中文亂碼問題:確保你項目下有simhei.ttf文件,加上此行代碼
//這是處理黑體的
java ontResolver.addFont("simhei.ttf", BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED);
//這是處理宋體的
fontResolver.addFont("simsun.ttc", BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED);
注意:flying-saucer對Html格式要求非常嚴格,每個標簽元素必須要結尾,對css3的支持也不是特別的好。