java Html 转 PDF

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

posted @ 2018-05-04 10:59  上路edc  阅读(2585)  评论(0编辑  收藏  举报