如何动态更改字体名称?

2024-05-09

我正在使用 Jasper jar 生成有关我的 J2EE 项目的报告。我能够成功生成 PDF,没有任何问题。但是,我希望根据我们在一处配置的设置动态更改所有 PDF 的字体名称。

我开始了解条件样式,这对于完成此任务很有用。然而,我确实有数百种字体,无法在每个地方都有条件地设置样式。这将使报告变得更加糟糕。

我正在寻找一个合适的解决方案来帮助我动态更改 jasper PDF 上的字体。


我能想到的最简单的方法是在报告中使用默认样式并在填写报告之前通过java更改其字体名称。

Example

在jrxml中设置样式(我将使用默认样式),因为这样我不需要将其分配给textField而且可以更快地从JasperReport object

<jasperReport xmlns="http://jasperreports.sourceforge.net/jasperreports" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://jasperreports.sourceforge.net/jasperreports http://jasperreports.sourceforge.net/xsd/jasperreport.xsd" name="reputation" pageWidth="595" pageHeight="842" columnWidth="555" leftMargin="20" rightMargin="20" topMargin="20" bottomMargin="20" uuid="a88bd694-4f90-41fc-84d0-002b90b2d73e">
    .....
   <style name="myStyle" isDefault="true" fontName="DejaVu Sans"/>
    ....
</jasperReport>

在java中加载您的报告(jrxml),更改默认样式字体名称,然后填写报告

JasperReport report = JasperCompileManager.compileReport("jmyReport.jrxml");
report.getDefaultStyle().setFontName("NewFontName");
JasperPrint jasperPrint = JasperFillManager.fillReport(report, paramMap,datasource);

但记得你需要将所有字体添加到字体扩展! https://stackoverflow.com/a/35549391/5292302,如果您想确保它们在客户端计算机上的 pdf 导出中正确呈现。

您还可以使用非默认样式,在这种情况下您需要将其分配给textField并在中找到它JRStyle[] styles = report.getStyles();通过比较JRStyle#getName() http://jasperreports.sourceforge.net/api/net/sf/jasperreports/engine/JRStyle.html#getName--

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何动态更改字体名称? 的相关文章

随机推荐

  • 如何从后端 API 获取标头或特定标头?

    我想使用 fastAPI 从函数内的 API 中检索特定标头 但我找不到解决方案 在烧瓶中很简单 request headers your header name 为什么 fastAPI 做这么简单的事情却这么复杂 有人知道检索标头的解决方
  • 有条件地将可选组替换为 gsub

    一位用户问我如何做到这一点如何使 ggplot 图例中的选定单词变为斜体 https stackoverflow com questions 76054997 how to italicize select words in a ggplo
  • 除括号中的空格外,将字符串拆分为所有空格

    我正在尝试将文本拆分为以下内容 例如在空格上 var line Text what is what s a story fable called named about Search Title 但我希望它忽略括号内的空格 这应该产生一个数
  • 基于 SQS 队列大小的自动缩放

    我已将这些命令组合在一起 以根据 SQS 队列大小自动缩放 EC2 实例 我已运行所有命令 我的队列有 10 条消息 但尚未启动单个实例 我想弄清楚我的 cloudwatch 警报正在侦听哪个 SQS 队列 此外 我们还感谢任何有助于识别问
  • 将 ArrayList 保存到 SharedPreferences

    我有一个ArrayList与自定义对象 每个自定义对象都包含各种字符串和数字 即使用户离开活动然后想要稍后返回 我也需要该数组保留下来 但是在应用程序完全关闭后我不需要该数组可用 我通过使用这种方式保存了很多其他对象SharedPrefer
  • 如何使用 try.zorba.io 从 JSON 运行 JSONiq

    我需要编写一个 JSONiq 表达式 仅列出成本至少为 3 的产品的名称 这是我在XQuery部分 supermarket visit date 08032019 bought item type confectionary item na
  • 使用 matplotlib 从 TeX 创建数学表达式的图像

    使用 python 库 matplotlib 我发现了这个问题的解决方案 在 PyQt 中 很好地 显示代数表达式 https stackoverflow com questions 14097463 displaying nicely a
  • 在哪里指定图像尺寸以实现最快渲染:在 HTML 中还是在 CSS 中?

    我了解到 明确指定图像尺寸是最佳实践 然后 浏览器可以在仍然下载图像本身的同时布局页面 从而缩短 感知的 页面渲染时间 这是真的 如果是这样 在 HTML 或 CSS 中指定尺寸是否有区别 HTML img src width 200 he
  • XMLReader - 如何处理未声明的命名空间

    Merged https meta stackexchange com questions 158066 what is a merged question with 如何使用 XMLReader 读取未定义命名空间的 XML 文件 que
  • jQuery Mobile 弹出内容高度超过窗口高度

    The jQuery 移动弹出窗口 http jquerymobile com demos 1 2 0 docs pages popup 尺寸仅限于具有左右边距 15 像素 顶部和底部边距 30 像素 http jquerymobile c
  • 如何使用广播接收器检查音乐是否正在播放?

    我想阻止我的一些代码执行only当前正在播放音乐或视频时 我如何使用广播接收器来实现这一点 为此你不需要广播接收器 AudioManager是你的朋友 AudioManager isMusicActive 是否有您想要的工作 请仔细查看此处
  • Tensorflow:logits 和标签必须具有相同的第一维

    我是张量流新手 我想改编 MNIST 教程https www tensorflow org tutorials layers https www tensorflow org tutorials layers用我自己的数据 40x40 的图
  • 如何确保 std::map 是有序的?

    Using a std map
  • Boost Fusion 文章、示例、教程?

    您知道 boost fusion 库使用的任何好的资源 文章 示例吗 Boost Fusion 看起来非常有趣 我想我了解它的工作原理以及如何使用基础知识 但我正在寻找一些显示任何有趣的用法 实践的资源 例如文章或博客 除了 boost o
  • 通过 std::function 进行函子引用

    基本上 我希望有以下语义 include
  • 在 Bookdown 中呈现附录图号

    Bookdown 是一个很棒的软件包 我期待看到它如何发展 但现在我在渲染数字方面遇到了麻烦pdf document2附录中的数字时的格式 具体来说 当带有标题的图形位于附录中时 图形编号应采用 A 1 A 2 B 1 B 2 等形式 但图
  • 无法访问类“std::basic_ios<_Elem,_Traits>”中声明的私有成员

    此特定方法有问题 不知道如何解决 我收到的错误是上面的 错误 C2248 std basic ios basic ios 不能 访问类中声明的私有成员 std basic ios C Program Files Microsoft Visu
  • 如何在 Swift ios 中获取国家/地区列表?

    我已经看到了两个与我类似的问题 但这些问题的答案对我不起作用 我有一个旧项目 其中在一组方括号内手动输入了国家 地区列表 我可以轻松地在我的 pickerView 中使用它 但我想知道是否有更有效的方法来做到这一点 我将在 UIPicker
  • 如何删除 TFS 工作区映射?

    我在一个团队项目中的 tfs 中有一个项目 然后我们将该项目移动到另一个团队项目中的不同位置 我已将 Jenkins 配置为连接到团队项目并构建我的解决方案 但是当我更改设置以连接到新的 tfs 团队项目时 出现以下错误 workspace
  • 如何动态更改字体名称?

    我正在使用 Jasper jar 生成有关我的 J2EE 项目的报告 我能够成功生成 PDF 没有任何问题 但是 我希望根据我们在一处配置的设置动态更改所有 PDF 的字体名称 我开始了解条件样式 这对于完成此任务很有用 然而 我确实有数百