java Html Transform PDF

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.

Guess you like

Origin http://43.154.161.224:23101/article/api/json?id=325287938&siteId=291194637
Recommended