【问题标题】:Jasper report, load multiple Font ExtensionJasper 报告,加载多个字体扩展
【发布时间】:2016-02-25 15:30:42
【问题描述】:

我希望我的 Jasper 报告能够动态支持 5 或 6 种语言。

我希望使用 google noto-sans 字体 (www.google.com/get/noto) 和 google noto,每种语言都有一个文件,(在主字体文件旁边)

我应该创建几个字体扩展并将它们添加到我的类路径中吗?

按照我之前的问题 How to get non-english support when exporting to PDF?

【问题讨论】:

  • 不清楚的是,您是否喜欢使用相同的 jrxml(相同的报告,只定义一种字体)为不同的导出使用不同的字体?
  • 在 jrxml 中,您定义了 1 个字体名称,相对于此,您只能有 1 个字体扩展名(您可以尝试解决不让 pdf 找到您的字体并动态设置默认值),但是我似乎需要一种支持所有语言的字体或具有不同字体(不同语言)的不同报告和字体扩展中的多种字体
  • 那么我该如何解决 on-sans,(它们提供一个主文件,以及任何其他语言的另一个字体文件)
  • 使用单个主文件!创建字体扩展名,设置正确的字体名称并启动并运行...
  • 我认为在 itext 中(对 api 不太熟悉,只是在谷歌上搜索)它可能有一个字体后备,只是想象是否可以定义一个字体链。

标签: java jasper-reports export-to-pdf


【解决方案1】:

在您拥有的碧玉报告中

<font fontName="google_noto"/>

与此字体相关,您可以只有 1 个 字体扩展名为 family name google_noto(包含普通、粗体、斜体等字体)。

你不能动态切换这个字体扩展,解决办法是:

  1. 使用包含所有相关语言的字体。

  2. 为具有不同fontName 的不同语言创建一个不同的jrxml(报告),并使用所有不同的family names 创建字体扩展:

    //report in English
    <font fontName="google_noto_en"/>
    //report in Italian        
    <font fontName="google_noto_it"/>
    

解决方法是指示假字体,禁用丢失字体的错误并在生成报告之前根据需要切换默认字体。

net.sf.jasperreports.awt.ignore.missing.font="true"
net.sf.jasperreports.default.font.name="google_en"

这个问题是关于设置属性JRProperties became deprecated, recommended way of replacing

不过,我强烈推荐并选择:“1. 使用包含所有相关语言的字体”

【讨论】:

  • 我同意,使用相同的字体是更好的方法,因为我不想管理报告的不同副本。
  • 我也希望我能在一份报告中做到这一点,但我想现在我不得不使用单一字体
  • 我们可以使用字体集来呈现 pdf 报告吗?它正在 Jasper Studio 上工作。但是,当它在 java 应用程序中使用时,字体没有加载
【解决方案2】:

有办法做到这一点...

您可以放置​​多个文本框字段,并在单个文本框上使用您想要显示的单个字体名称。 好处是,如果某些字体未在 google_noto 中呈现,则该文本框将不显示任何内容(空白),如果该字体在 google_noto1 中呈现,则该文本框将显示该字体文本。

我希望它工作正常(Y)

【讨论】:

    猜你喜欢
    • 2016-08-06
    • 1970-01-01
    • 2013-11-27
    • 1970-01-01
    • 2018-03-10
    • 2019-05-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多