我正在编写一个使用 BIRT 生成报告的 Java 应用程序。我想将自定义字体打包在 jar 文件中,并能够将它们嵌入到 PDF 报告中。
我可以先将字体提取到文件系统,然后将 BIRT 指向文件系统位置,但我想知道是否可以将 BIRT 配置为直接从类路径加载字体?
我查阅了BIRT的源代码,发现无法配置BIRT从类路径注册可嵌入字体。 BIRT 通过 fontsConfig.xml 中指定的路径注册字体。它使用 iText 的FontFactory
。出奇,FontFactory
本身可以从类路径注册字体。但是 BIRT 的开发人员可能不知道这个功能,因此 BIRT 不会注册任何不在文件系统上的字体,即当File#exists()
回报false
.
幸运的是,FontFactory.register()
是一个静态方法,所以有一个解决方法:我们可以绕过 BIRT 自己注册字体。在初始化 BIRT 之前我们可以执行以下操作:
FontFactory.register("/com/example/fonts/font1.ttf");
FontFactory.register("/com/example/fonts/font2.ttf");
我尝试过,字体已正确嵌入到 PDF 输出中。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)