Html Transform PDF
- Use the flying-saucer plugin to do it
Import flying-saucer dependency
<dependency> <groupId>org.xhtmlrenderer</groupId> <artifactId>flying-saucer-pdf</artifactId> <version>9.0.8</version> </dependency>
java code implementation
/** * @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(); } } }
Chinese garbled problem: make sure you have the simhei.ttf file under your project, add this line of code
//这是处理黑体的 java ontResolver.addFont("simhei.ttf", BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED); //这是处理宋体的 fontResolver.addFont("simsun.ttc", BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED);
Note: flying-saucer has very strict requirements on Html format, each tag element must end, and the support for css3 is not particularly good.