textField中带有粗体样式的文本在分页符中被截断

时间:2017-05-31 09:24:35

标签: jasper-reports

在SO中有关于此主题的一些相关问题,但没有解决方案(最接近的here

我有一个长文本作为jasper报告中文本字段的输入,如果分页文本有粗体文本,则页面中断部分文本会被截断。如果拆分文本只是简单的,它可以正常工作。

如果输入文本具有粗体html标记,那么 JasperReports 引擎似乎无法计算页面中的最大字符数,然后它会在导出为PDF时删除剩余的单词。我正在使用 JasperReports 6.2.0

这是源代码:

<band height="40" splitType="Stretch">
    <textField isStretchWithOverflow="true" isBlankWhenNull="true">
        <reportElement positionType="Float" stretchType="RelativeToBandHeight" x="30" y="10" width="510" height="20" isPrintWhenDetailOverflows="true">
            <property name="local_mesure_unity" value="pixel"/>
            <property name="com.jaspersoft.studio.unit.y" value="px"/>
            <property name="local_mesure_unitx" value="pixel"/>
            <property name="com.jaspersoft.studio.unit.x" value="px"/>
            <property name="local_mesure_unitwidth" value="pixel"/>
            <property name="com.jaspersoft.studio.unit.width" value="px"/>
            <property name="local_mesure_unitheight" value="pixel"/>
            <printWhenExpression><![CDATA[$P{myInputData} != null]]></printWhenExpression>
        </reportElement>
        <textElement textAlignment="Justified" markup="html">
            <font fontName="ArialExtendedJasper"/>
        </textElement>
        <textFieldExpression><![CDATA[$P{myInputData}]]></textFieldExpression>
    </textField>
</band>

修改: 添加了字体扩展属性

<?xml version="1.0" encoding="UTF-8"?>
<fontFamilies>
  <fontFamily name="ArialExtendedJasper">
    <normal>fonts/ArialExtendedJasper/arial.ttf</normal>
    <bold>fonts/ArialExtendedJasper/arialbd.ttf</bold>
    <italic>fonts/ArialExtendedJasper/ariali.ttf</italic>
    <boldItalic>fonts/ArialExtendedJasper/arialbi.ttf</boldItalic>
    <pdfEncoding>Identity-H</pdfEncoding>
    <pdfEmbedded>true</pdfEmbedded>
    <exportFonts>
    </exportFonts>
  </fontFamily>
</fontFamilies>

1 个答案:

答案 0 :(得分:0)

亚历克斯和彼得是对的,这是一个字体扩展问题,我更改了字体(源.ttf文件),这个问题没有再次发生。

我从互联网上下载了arial字体,却不知道这个字体是否已获得许可,而且您发现的字体不可靠。

现在我正在使用Google Fonts,它们是免费的并且完美无缺!