当前位置:   article > 正文

ITextRenderer 生成PDF 文件

itextrenderer

pom.xml 文件添加相关依赖:

  1. <!--html 转 pdf -->
  2. <dependency>
  3. <groupId>org.xhtmlrenderer</groupId>
  4. <artifactId>flying-saucer-pdf</artifactId>
  5. <version>9.0.7</version>
  6. </dependency>

核心功能代码片段一:

  1. html 转pdf 文件写入指定pdf 文件中:
  2. ITextRenderer renderer = new ITextRenderer();
  3. ITextFontResolver fontResolver = renderer.getFontResolver();
  4. try {
  5. //设置字体,否则不支持中文,在html中使用字体,html{ font-family: SimSun;}
  6. fontResolver.addFont("thymeleaf/font/SIMSUNB.TTF", BaseFont.IDENTITY_H,BaseFont.NOT_EMBEDDED);
  7. } catch (IOException e) {
  8. logger.error(e.getMessage());
  9. }
  10. // 文档渲染document对象,字符串类型<html></html>
  11. renderer.setDocumentFromString(html);
  12. renderer.layout();
  13. // 生成文件写入指定pdf 文件中。
  14. renderer.createPDF(new FileOutputStream(new File("C://pdf//1.pdf")));

核心功能代码片段二:

  1. html 转pdf 文件, 通过response 输出pdf 文件流:
  2. // response 响应参数设置
  3. response.setContentType("application/pdf;charset=utf-8");
  4. response.setHeader("Content-disposition", "attachment;filename=" + URLEncoder.encode("单位工程总目 录.pdf", "UTF8"));
  5. response.setHeader("FileName", URLEncoder.encode("单位工程总目录.pdf", "UTF8"));
  6. ServletOutputStream servletOutputStream = response.getOutputStream();
  7. ITextRenderer renderer = new ITextRenderer();
  8. ITextFontResolver fontResolver = renderer.getFontResolver();
  9. try {
  10. //设置字体,否则不支持中文,在html中使用字体,html{ font-family: SimSun;}
  11. fontResolver.addFont("thymeleaf/font/SIMSUNB.TTF", BaseFont.IDENTITY_H,BaseFont.NOT_EMBEDDED);
  12. } catch (IOException e) {
  13. logger.error(e.getMessage());
  14. }
  15. // 文档渲染document对象,字符串类型<html></html>
  16. renderer.setDocumentFromString(html);
  17. renderer.layout();
  18. // 生成文件写入response 流中。
  19. renderer.createPDF(servletOutputStream );
  20. servletOutputStream .flush();
  21. servletOutputStream .close();

问题思考:使用ITextRenderer 满足HTML格式的Document 文档对象转换为pdf 文件,存在的问题如下:

1、汉字无法正常显示问题,

2、doucument 文档对象中包含插入的图片、媒体等相关资源需要进一步转换。

3、页面样式问题。

等其他相关问题

解决思路:通过wkhtmltopdf 客户端实现html 文档对象转换为pdf 文件,可以完美避免上面所描述的问题。

java 后台生成pdf 文件的整体思路:

1、基于模板引擎(freemarker/thymeleaf),生成模板html 文件

2、基于wkhtmltopdf 将html 文件转换为pdf 文件。

相关的功能代码,将在下一篇文章详细讲解。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/菜鸟追梦旅行/article/detail/229745
推荐阅读
相关标签
  

闽ICP备14008679号