我正在编写一个使用BIRT生成报告的Java应用程序.我想在jar文件中打包自定义字体,并能够将它们嵌入到PDF报告中.
我可以先将字体提取到文件系统,然后将BIRT指向文件系统位置,但我想知道是否可以配置BIRT直接从类路径加载字体?
den*_*ned 10
我查阅了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");
Run Code Online (Sandbox Code Playgroud)
我试过这个,字体正确嵌入PDF输出中.
| 归档时间: |
|
| 查看次数: |
2604 次 |
| 最近记录: |