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
相关产品推荐
相关产品推荐

