美文网首页
Java ftl模板+pdf下载 (附:jsoup引导网址)

Java ftl模板+pdf下载 (附:jsoup引导网址)

作者: 皮卡丘50号 | 来源:发表于2019-01-02 11:22 被阅读0次

    项目要求  生成pdf下载。  在网上找了几天终于找到了符合自己要求的的工具。

      思路:1. 生成模板。  2.转成pdf、进行下载。


    1.生成模板

    使用了 .ftl 制作模板文件。摘自:FreeMarker 之快速入门Demo - 七里香的博客 - CSDN博客

    同时可以使用html 或者xhtml ,然后使用jsoup。有一个大佬写的:java实现修改html模板内容 - heiliang27的博客 - CSDN博客。以此标记


         <dependency>

       <groupId>org.freemarker</groupId>  <artifactId>freemarker</artifactId> <version>2.3.23</version>

    </dependency>


    2.转成pdf

    摘自:java实现HTML转PDF - 橙子hhh的个人空间 - 开源中国

    经过项目的编写进行了一些修改。大体都是使用上述博客。在使用的时候出现了几个问题:

         1.模板文件生成出现了乱码。 办法 给模板设置字符编码。

        Configuration configuration = new Configuration(Configuration.getVersion());                             

         configuration.setDirectoryForTemplateLoading(new File(Test01.class.getResource("/test").getPath()));

        configuration.setDefaultEncoding("utf-8");       

       Template template=configuration.getTemplate("test.ftl");

        template.setEncoding("utf-8");

         2.在实际项目部署的时候,出现与本机结果不符的问题。查找发现是jar包冲突。

    public static void html2pdf(String htmlFile, String pdfFile) throws Exception {       

       // step 1         pdf转换

             String url = new File(htmlFile).toURI().toURL().toString();         

            System.out.println(url); System.out.println(pdfFile);

    // step 2             

            OutputStream os = new FileOutputStream(pdfFile);

    // OutputStreamWriter os = new OutputStreamWriter(new FileOutputStream(pdfFile),"UTF-8");         

               ITextRenderer renderer = new ITextRenderer();                     

         renderer.setDocument(url);// step 3 解决中文支持         

           ITextFontResolver fontResolver = renderer.getFontResolver();                                  fontResolver.addFont(FileTypeConvertUtil.class.getResource("/Fonts/simsun.ttc").getPath(), BaseFont.IDENTITY_H,     BaseFont.NOT_EMBEDDED);                 

           renderer.layout();     

          renderer.createPDF(os);     

             os.close();       

            System.out.println("create pdf done!!");

    }

      3.前端使用angularjs 框架的时候,使用http方法,无法实现下载,直接访问地址可以下载,则后端已经实现功能,可以使用window.location.href   直接打开页面进行下载(暂时没有找到好方法)。

    相关文章

      网友评论

          本文标题:Java ftl模板+pdf下载 (附:jsoup引导网址)

          本文链接:https://www.haomeiwen.com/subject/osoalqtx.html