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

飞碟添加嵌入式字体在tomcat上不起作用

景鹏云
2023-03-14

我用飞碟将XHTML转换成PDF文件。我的问题是,我在PDF中有一些丢失的土耳其字符。但是我不明白的是,我在junit测试中没有任何问题。我可以毫无问题地将XHTML文件转换成包含所有土耳其字符的PDF。但是如果我对部署在Tomcat上的应用程序做同样的操作,所有的土耳其字符都会丢失。

我做了一些调试,发现在这两种情况下都可以找到“/字体/阿里阿鲁尼.ttf”。我找到了一些相关的线程和itext文档,并尝试了所有这些。

http://developers.itextpdf.com/question/how-can-i-load-font-web-infresourcesfontsfoobarttf

unicode字符的飞碟字体

用于转换和添加字体的代码

            String path2 = "/fonts/arialuni.ttf";

           //FontFactory.register(path2);
            ITextRenderer renderer = new ITextRenderer();
          // renderer.getFontResolver().addFontDirectory(path2,true);

            renderer.getFontResolver().addFont(path2, BaseFont.IDENTITY_H,BaseFont.EMBEDDED);


            renderer.setDocumentFromString(docElem.html());
            renderer.layout();
            renderer.createPDF(os);
            renderer.finishPDF();
            baoOut.flush();

并且还为CSS应用了以下内容。但结果仍然相同。

@font-face {
    src: url('arialuni.ttf'); <!--src: url('/fonts/arialuni.ttf'); -->
    -fs-pdf-font-embed: embed;
    -fs-pdf-font-encoding: Identity-H;
}

body {
    font-family: Arial Unicode MS, Lucida Sans Unicode, Arial, verdana, arial, helvetica, sans-serif;
    font-size: 8.8pt;
}

有人知道吗,为什么在Tomcat上可以找到arialuni.tff却不能使用?

共有1个答案

都乐逸
2023-03-14

终于解决了。在一些地方,我使用

InputStream htmlIS = IOUtils.toInputStream(invoiceHtml);

相反

InputStream htmlIS = IOUtils.toInputStream(invoiceHtml, "UTF-8");

这导致了问题。

 类似资料:
  • 我正在使用PDFBox从现有的PDF模板构建文档,因此它会打开文件,向其中添加文本,然后保存。除了尝试使用外部TTF字体外,它工作得很好。我尝试了不同的方法,花了两天时间寻找解决方案,但PDFBox上没有太多。 这里有一些代码,使用字体“Tardy Kid”,因为它不能被误认为其他任何东西,也不太可能是任何标准库的一部分。 代码执行良好,显示println中的“TardyKid”(显示字体已加载且

  • 我正在使用飞碟库生成pdf。但是我对一些html实体有问题。 我已经在搜索解决方案了,我在这个论坛和其他地方找到了很多提示,但仍然存在问题。 我尝试过这种方法: http://sdtidbits.blogspot.com/2008/11/flying-saucer-xhtml-rendering-and-local.html 但没有任何成功 我的代码如下所示: 其中pdf是要创建的新pdf的名称,

  • 我已经搜索了这个问题,但我没有找到任何关于这个案例的东西。我发现了很多“如何将Spring Boot WAR部署到Tomcat”,但是没有关于用Spring Boot包装现有的Tomcat WAR的内容。 我正在尝试用Spring Boot“包装器”包装一个现有的WAR,这样就不必重新配置现有的代码库。这个解决方案不起作用,因为它依赖于在绝对位置可用的WAR,而我们正试图将“应用程序”WAR打包在

  • 我有时会在pom中看到以下声明。xml。。。 如您所见,sping-boo-starter-web被声明为tomcat-embed-jasper。 是不是sping-boo-starter-web已经有一个嵌入式tomcat了?为什么一些开发人员仍然声明tomcat-embed-jasper以及boot-starter-web?还是有什么原因?

  • 我正在使用飞碟/iText生成报告。现在,报告有一个条件,即如果发生特定情况,报告应移动到pdf的下一页,并在pdf上添加数据,等等<问候Pawan

  • 我的系统: Qt Embedded(开源版)4.8 用于图形的Linux帧缓冲区 字体:(拉丁语、日语、希腊语)。(/usr/lib/fonts) 我正在尝试将拉丁字母与其他类型的字符(例如日语)混合使用。我有拉丁字母和日语字符的字体,但它们不是同一种字体。我研究了帖子: Qt同时使用多个字体以及如何在Qt-embedded中正确输出多语言文本 我按照步骤操作,但无法正确显示所有字符 有没有办法表