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

2023-11-24

我正在编写一个使用 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(使用前将#替换为@)

如何配置 BIRT 报告引擎直接从类路径加载字体? 的相关文章

随机推荐

  • Delphi 编译和构建在同一项目上生成不同的二进制文件

    在新的 VCL 应用程序中Compile and Build操作生成相同的二进制文件和映射文件 即使关闭 在项目中包含版本信息 选项 exe 文件末尾也有细微差别 已经讨论过 映射文件的字节与字节相同 但是当我添加任何第三方组件时 构建和编
  • 从 ul li jquery 获取所选项目

    您好 我正在动态地在 ul li HTML 标记中填充一个列表 我所需要的只是获取相应 ul 的选定 li 的值 我尝试了所有可能的 jquery 方法 但仍然未定义 我将 ul li 填充为 jQuery get url function
  • MySQL 按 ID 和最新日期时间分组

    我在这里看到了类似的问题 但没有一个对我的情况有帮助 我有一个表可以说测试 使用 mysql MyISAM 测试具有以下架构 TID INT PRIMARY KEY AUTO INCREMENT TData varchar data tha
  • 当只有 https URL 时,获取证书并将其添加到 Java 信任库?

    我正在尝试通过 Google Cloud Message 服务器向 Android 设备发送推送通知 我们用来执行此操作的 URL 是 https android googleapis com gcm send 在我们的企业应用程序中 我们
  • Clojure 宏将保留关联映射顺序

    作为前言 我在 Windows 7 64 位 上运行 Java 版本 6 更新 33 使用clooj作为我的 IDE 我没有尝试在任何其他系统中重现我的问题 我对 Clojure 有经验 但对 Java 一点经验都没有 我试图解决的整个问题
  • Firebase 存储安全规则 400 错误问题“权限被拒绝。无法访问存储桶 xxxxx-****.appspot.com”

    尝试上传照片时 我不断从 firebase 链接收到消息错误 提示我的 React 项目中的 firebase 存储上传出现 400 错误 之前一切正常并成功上传图像 但现在它停止上传照片 出现以下错误 我不知道问题出在哪里 检查中提示出来
  • Horner 小数部分递归算法 - Java

    我正在尝试创建一个递归方法 使用 Horner 算法将以 n 为基数的小数转换为以 10 为基数的小数 我在这里和各处进行了搜索 但找不到任何详细处理小数部分的地方 需要注意的是 我在递归方面非常薄弱 因为我还没有在编程课程中正式学习它 但
  • 我需要一个 MSI 自定义操作来从 MSI 源目录复制文件

    我正在使用 VS 2008 为 c windows 项目创建一个安装程序 我正在尝试编写一个自定义操作 该操作从存储在文件服务器上的 MSI 文件的源目录复制设置文件 例如 server fileshare myappinstaller m
  • Spring REST 服务:如何配置以删除 json 响应中的空对象

    我有一个返回 json 响应的 Spring Web 服务 我使用此处给出的示例来创建服务 http www mkyong com spring mvc spring 3 mvc and json example 返回的json格式为 na
  • 配置 Tomcat 以使用 Windows 证书存储进行 SSL

    我已经部署了许多 SSL 配置 包括 Tomcat cacerts keytool 和 IIS Windows 证书存储 netsh http sslcert 因此我熟悉这些过程 有没有人想出一种方法将 Tomcat 的 SSL 连接器指向
  • 可以允许来自 HTTPS 网站的 HTTP 请求吗?

    我已经安装了 非通配符 SSL 证书 以便我的网站可以使用 HTTPS 当我尝试从 HTTP url 请求资源时 我收到如下错误消息 混合内容 页面位于 https example com 已加载完毕 HTTPS 但请求不安全的样式表 ht
  • JsonSchema:根据另一个属性的值验证类型

    我正在使用以下架构来验证我的 json schema http json schema org schema title Rules description Describes a set of rules type object prop
  • 无法从 Microsoft Graph Explorer 更新 Sharepoint 托管元数据字段

    我正在尝试通过 Graph Explorer 更新与列表项关联的字段 https developer microsoft com en us graph graph explorer 或 REST API 调用 对于其中一个字段 其值可以是
  • Apache Camel Http 和 SSL

    我一直在尝试获得与 Camel 一起使用的 2 路 ssl https 代理 我已经能够使用 2 路 ssl 设置 Jetty 组件 现在尝试让它与 Http4 组件一起工作以完成代理的客户端 当我将码头流量路由到日志组件时 一切都很好 并
  • Weka GUI - 内存不足,无法加载?

    我过去也曾加载过同样的 Weka 安装 我只是尝试加载 Weka GUI 双击图标 但出现以下错误 我该如何修复它 OutOfMemory Not enough memory Please load a smaller dataset or
  • 无法在当前目录中获取脚本源

    显然 我不能source脚本 如果该脚本位于当前目录中 例如 source some dir script sh Ok 工作正常 但如果我与脚本位于同一目录中 则会出错 cd some dir source script sh sh sou
  • Java显示当前时间

    我有一个代码 可以显示运行应用程序时的当前日期和时间 DateFormat dateFormat new SimpleDateFormat yyyy MM dd HH mm ss Calendar cal Calendar getInsta
  • VIM:按函数名称排序

    我的 menu vim 文件中有很多函数 是否可以 由我 选择它们并按函数名称对它们进行排序 p e 从乐趣中找到台词 或函数 到线endfun 查找函数名称并根据函数名称对整个块进行排序 从 a z 有时我会在函数名称上方添加一行注释 可
  • CloudKit 通知

    我可能在这里遗漏了一些明显的东西 如何创建一个 CloudKit 通知 其中包含有关您收到通知的 CKRecord 的详细信息 即不仅仅是通用的 已创建新项目 而是带有记录标题的通知 例如 吉尔和杰西卡的生日派对 为每个新记录更改创建一个带
  • 如何配置 BIRT 报告引擎直接从类路径加载字体?

    我正在编写一个使用 BIRT 生成报告的 Java 应用程序 我想将自定义字体打包在 jar 文件中 并能够将它们嵌入到 PDF 报告中 我可以先将字体提取到文件系统 然后将 BIRT 指向文件系统位置 但我想知道是否可以将 BIRT 配置