碧玉报告多语言-在春季启动中生成pdf时无法显示字体

Aka*_*hah 7 java multilingual jasper-reports export-to-pdf spring-boot

我正在使用Java中的JasperReports生成多语言报告。

生成pdf时,几种语言无法正确显示。

在此处输入图片说明

而当我生成Excel时,将使用正确的语言正确生成报告。

在此处输入图片说明

在互联网上搜索我发现不支持pdf字体。

  • 所以我加了 noto sans字体。
  • jaspar studio创建自定义的jar字体文件。
  • 在类路径中添加。

这里我的代码设置为字体:

 Style rowStyle = new Style();
 Font font = new Font(FONT_SIZE_SMALL, "Noto Sans", false, false, false);
 font.setPdfFontName("Noto Sans");
 font.setPdfFontEncoding(Font.PDF_ENCODING_Identity_H_Unicode_with_horizontal_writing);
 font.setPdfFontEmbedded(false);
 rowStyle.setFont(font);
Run Code Online (Sandbox Code Playgroud)

任何想法如何解决?

cam*_*tic 5

您是否尝试设置DEBUG碧玉报告日志记录来检查呈现PDF时正在使用哪种字体?(下面的示例log4j设置)

<category name="net.sf.jasperreports">
    <priority value="DEBUG" />
</category>
Run Code Online (Sandbox Code Playgroud)

例如,您应该看到jasper正在加载的字体的DEBUG日志:

DEBUG SimpleFontFace:177 - Loading font fonts/ARIALUNI.TTF
Run Code Online (Sandbox Code Playgroud)

而且,如果您使用的是jasper字体扩展名(如下所述),您应该会看到类似以下内容的内容:

 DEBUG FontExtensionsRegistry:88 - Loading font extensions from net/sf/jasperreports/fonts/jasperreports-fonts.xml
Run Code Online (Sandbox Code Playgroud)

您是否将字体包含在类路径中?我已经成功使用了一个自定义构建的jar,类似于文档中这篇文章中所描述的:https : //community.jaspersoft.com/wiki/adding-fonts-embedding-pdf

我也可以尝试setPdfFontEmbedded(true)。在生成的PDF中,如果您在Adobe Acrobat Reader中打开PDF,可以确定该字体是否包含在报告中,并查看它是否在文件->属性...->字体选项卡下列出(请参见屏幕截图)。它应该在字体名称旁边有(Embedded)或(Embedded子集)。 在此处输入图片说明

编辑

上述步骤可以帮助调试此类问题。事实证明,“ Noto Sans”字体不支持印度字符,尽管使用“ Arial Unicode MS”也可以。

在“ 文档”中,您可以查看支持的几种语言。