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