当前位置: 首页 > 面试题库 >

如何配置BIRT报表引擎直接从类路径加载字体?

彭成天
2023-03-14
问题内容

我正在编写一个使用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输出中。



 类似资料:
  • 我正在使用最新版本的spring boot和spring cloud config。当我用应用程序启动应用程序时。属性,它工作正常。但是,当我从引导开始时。yml文件,它从Spring cloud下载所有道具,并加载应用程序。类路径中的属性。Spring的云就是这样运作的吗?是否可以将Spring云配置客户端配置为仅从远程云配置而不是从应用程序读取属性。类路径中的属性。 我正在使用, --Spri

  • 问题内容: 我正在使用一些第三方代码,这些代码在给定“ -classpath”命令行参数时不会设置java.class.path,而是仅创建一个类加载器,将命令行中指定的类路径中所有项的所有url添加到类加载器,然后将其设置为上下文类加载器。在我编写的此代码的插件类中,我获得了该类加载器的实例,并且需要以某种方式使用它来获取基础类路径,以便可以在JavaCompiler.getTask(… ),并

  • 我是SWT的新手,需要绘制图形并选择使用BIRT Chart Engine框架,现在我已经在线阅读,我想我已经通过在Eclipse中执行以下操作安装了BIRT框架: 帮助- 然后,我在“使用”框中复制以下链接:http://download.eclipse.org/birt/update-site/4.2 然后它安装了所有东西-所以我会假设。现在我想开始开发,但由于某种原因,我不能导入该包,例如导

  • 问题内容: 我有一个遵循标准目录布局的项目设置(虽然未使用Maven): 本机DLL位于资源文件夹中,而源位于Java文件夹中。resources文件夹是Java类路径的成员。 我现在想加载DLL,而不必设置JRE 选项或设置变量,以便可以通过简单的双击来启动生成的jar文件。 运行jar文件时是否可以将资源文件夹添加到库搜索路径而无需进行其他配置?例如,设置与清单中的相似? 问题答案: 直到今天

  • 在运行jar文件时,有没有可能将资源文件夹添加到库搜索路径中,而不必做额外的配置?例如。使用与清单中的类似的设置?

  • 我正在我的一个项目中使用scala typesafe config(版本1.2.1)来读取application.conf文件,我的项目依赖于多个其他项目,并且我创建了一个具有依赖项的jar来运行依赖项项目。 问题--这些项目也使用typesafe并且在顶级目录中有application.conf文件,而我的maven jar具有依赖项,在同一个类路径中只获取一个application.conf,