美文网首页
HTML 转 PDF 新姿势

HTML 转 PDF 新姿势

作者: Java架构师CAT | 来源:发表于2019-11-20 17:13 被阅读0次

    使用 Thymeleaf 动态渲染 HTML

    1、添加依赖

    <!--PDF转化工具-->com.itextpdfitextpdf5.4.2org.xhtmlrenderercore-rendererR8

    2、编码工具类

    importcom.itextpdf.text.pdf.BaseFont;importcom.lowagie.text.DocumentException;importorg.springframework.stereotype.Component;importorg.xhtmlrenderer.pdf.ITextFontResolver;importorg.xhtmlrenderer.pdf.ITextRenderer;importjava.io.IOException;importjava.io.OutputStream;/** * 导出PDF文件转换工具 */publicclassPDFUtil{/**    * 生成 PDF 文件    * @param out 输出流    * @param html HTML字符串    * @throws IOException IO异常    * @throws DocumentException Document异常    */publicstaticvoid createPDF(OutputStreamout,Stringhtml)throwsIOException,DocumentException{ITextRendererrenderer = newITextRenderer();        renderer.setDocumentFromString(html);// 解决中文支持问题ITextFontResolverfontResolver = renderer.getFontResolver();fontResolver.addFont("pdf/font/fangsong.ttf",BaseFont.IDENTITY_H,BaseFont.NOT_EMBEDDED);fontResolver.addFont("pdf/font/PingFangSC.ttf",BaseFont.IDENTITY_H,BaseFont.NOT_EMBEDDED);        renderer.layout();        renderer.createPDF(out);    }}

    字体文件自行下载,并添加到 resouces 路径下,上述路径对应修改

    3、效果演示

    遇到的问题与解决方法

    1、Maven 打包源码后,导致 HTML 文件内容被篡改

    原因:Maven 插件使用的占位符 ${} 与 Thymeleaf冲突

    解决方法:在 pom.xml 中配置资源文件,打包时不对html文件的占位符进行处理

        ...src/main/resourcestrue**/*.htmlsrc/main/resourcesfalse**/*.html

    2、使用 Docker 制作镜像时,下载文件时报错,缺少字体处理类

    使用镜像源 java:8 而不是 openjdk:8-jre-alpine

    双十一虚拟机大促,主打机型大横评!

    本文通过OpenWrite的免费Markdown转换工具发布

    -END-

    留言交流不过瘾

    关注我,回复“加群”加入各种主题讨论群

    相关文章

      网友评论

          本文标题:HTML 转 PDF 新姿势

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