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的支持也不是特别的好。