美文网首页
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