You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JasperReports中Static Text粗体在Java程序生成PDF时失效求助

JasperReports静态文本粗体在Java导出PDF时失效问题

问题详情

在Jasper Studio中将Static Text字段设置为粗体后,从Studio直接导出PDF显示正常;但使用相同jrxml文件,通过依赖jasperreports-6.20.6.jar的Java程序生成PDF时,该静态文本无法显示粗体,仅显示普通文本。

相关代码片段

Static Text配置

<staticText>
    <reportElement x="2" y="0" width="100" height="12" uuid="d20e2fa5-05f7-481f-a71e-694e3951e368">
        <property name="com.jaspersoft.studio.unit.height" value="px"/>
        <property name="com.jaspersoft.studio.unit.x" value="px"/>
    </reportElement>
    <textElement>
        <font size="8" isBold="true"/>
    </textElement>
    <text><![CDATA[SENT TO:]]></text>
</staticText>

PDF导出代码

JasperExportManager.exportReportToPdfFile(jasperPrint,"filename.pdf")

解决方案

  • 指定字体并开启嵌入:Jasper Studio默认可能自动处理字体嵌入,但Java导出时需显式配置。修改<font>标签,指定具体字体名称并开启嵌入:
    <font size="8" isBold="true" fontName="Arial" isEmbedded="true"/>
    
  • 确保运行环境存在对应粗体字体:Java程序运行的服务器或本地环境必须安装目标粗体字体,否则JasperReports会自动 fallback 到普通字体。若无法安装字体,可制作Jasper字体扩展包(Font Extension),将字体资源打包进项目。
  • 统一JasperReports版本:确认Jasper Studio使用的版本与Java项目依赖的jasperreports-6.20.6.jar版本一致,避免版本兼容性导致的样式失效。
  • 配置PDF专属字体属性:针对PDF导出,显式指定PDF字体名称和编码,确保粗体样式被正确识别:
    <font size="8" isBold="true" fontName="Arial" pdfFontName="Arial-BoldMT" pdfEncoding="Identity-H" isEmbedded="true"/>
    

内容的提问来源于stack exchange,提问作者itsraja

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.02 04:43:23