当前位置: 首页 > 知识库问答 >
问题:

Springboot&Thymeleaf HTML模板:转换成PDF后汉字消失

魏威
2023-03-14

我们正在生产出html模板的pdf发票。

但是当html文本是中文的时候,结果就有问题了。

尽管使用UTF-8进行了设置,但特殊字符不会显示出来。

<html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:th="http://www.thymeleaf.org">

    <head>
        <title>风标汽车租赁服务收据</title>
               <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
     ....
</html>

和模板解析器:

@Bean
public FileTemplateResolver fileTemplateResolver() throws URISyntaxException {
    FileTemplateResolver fileTemplateResolver = new FileTemplateResolver();
    fileTemplateResolver.setPrefix(getPath());
    fileTemplateResolver.setTemplateMode("LEGACYHTML5");
    fileTemplateResolver.setSuffix(".html");
    fileTemplateResolver.setCharacterEncoding("UTF-8");
    fileTemplateResolver.setOrder(1);
    return fileTemplateResolver;
}

共有1个答案

雍志文
2023-03-14

通过下载simsun的ttc文件并将其添加到项目参考资料中,我找到了一个解决方案。

然后我将其添加到渲染器的字体中,如下所示:

        ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
        ITextRenderer renderer = new ITextRenderer();

        ITextFontResolver resolver = renderer.getFontResolver();
        final ClassPathResource fonts = new ClassPathResource("fonts/simsun.ttc");
        resolver.addFont(fonts.getPath(), BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED);
        renderer.setDocumentFromString(processedHtml);
        renderer.layout();
        renderer.createPDF(byteArrayOutputStream, false);
        renderer.finishPDF();

还要确保从pom.xml中删除筛选true,否则Spring会损坏二进制ttc文件。

        <resources> 
            <resource> 
                <directory>src/main/resources</directory> 
                <filtering>true</filtering>   -- remove this line
            </resource> 
        </resources> 
 类似资料:
  • 本文向大家介绍php 把数字转换成汉字的代码,包括了php 把数字转换成汉字的代码的使用技巧和注意事项,需要的朋友参考一下 直接上实例,写到 千亿上了。 方法二: 以上所述就是本文的全部内容了,希望大家能够喜欢。

  • 本文向大家介绍python实现将汉字转换成汉语拼音的库,包括了python实现将汉字转换成汉语拼音的库的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了python实现将汉字转换成汉语拼音的库。分享给大家供大家参考。具体分析如下: 下面的这个python库可以很容易的将汉字转换成拼音,其中用到了一个word.data 的字典,可点击此处本站下载。 希望本文所述对大家的Python程序设计有所

  • 实现将汉字转换为拼音的功能。 [Code4App.com]

  • 问题内容: 我有一个网址 href =“ ../ job / jobarea.asp?C_jobtype =经营管理主管&peoplenumber = 151” , 这在检查元素中显示。但是当在新标签页中打开时,它显示为 ../job/jobarea.asp?C_jobtype=%B8g%C0%E7%BA%DE%B2z%A5D%BA%DE &peoplenumber=151 我如何知道浏览器使用哪

  • 汉字拼音转换工具,可以用于汉字注音、排序、检索。 注:这个版本同时支持在 Node 和 Web 浏览器环境运行,Python 版请关注 mozillazg/python-pinyin 特性 根据词组智能匹配最正确的拼音。 支持多音字。 简单的繁体支持。 支持多种不同拼音风格。 安装 via npm: npm install pinyin 用法 开发者: var pinyin = require("

  • 我希望输出日志消息的方式与使用bash“logger”命令的方式完全相同,但在Java中使用Log4j: 在尝试了许多不同的模式后,我无法再现相同的输出。知道怎么写这个图案吗? 谢谢你,