Checkmark(Wingdings字体)未在pdf导出中显示

时间:2015-04-03 14:52:08

标签: jasper-reports

在预览报告时,该复选框显示正确,但在导出为pdf时不会显示。

<staticText>
 <textElement textAlignment="Center">
  <font fontName="Wingdings" size="18"/>
 </textElement>
 <text><![CDATA[]]></text>
</staticText>

复选标记已从word文档复制到此处。

Wingdings是Jasper中的内置字体,所以我猜不需要将其添加为字体扩展名。

我正在使用Jaspersoft Studio 5.6

这就是我选择Font Windings的方式,因此我假设它内置于Jasper中。

enter image description here

1 个答案:

答案 0 :(得分:0)

我不认为Wingdings内置于Jasper中。您可以通过尝试在 PDF字体名称属性的高级属性标签中找到它来确认。在XML视图中,您可以输入:

<font fontName="Wingdings" pdfFontName="Wingdings"/>

但在导出过程中你会发现找不到Wingdings字体。此外,pdfFontName已弃用,因此您无论如何都不应该使用它。

看起来你必须使用Font Extensions。这是我的工作示例:

<staticText>
    <reportElement x="20" y="0" width="100" height="30" uuid="96ccfacd-cf1e-44b2-ae0f-69c863141ba7"/>
    <textElement>
        <font fontName="Wingdings"/>
    </textElement>
    <text><![CDATA[]]></text>
</staticText>

和字体扩展配置:

<fontFamilies>
    <fontFamily name="Wingdings">
        <normal>fonts/wd/wingding.ttf</normal>
        <pdfEncoding>Identity-H</pdfEncoding>
        <pdfEmbedded>true</pdfEmbedded>
    </fontFamily>
</fontFamilies>

编辑:

澄清:我的意思是 PDF字体名称如下所示

PDF Font Name drop-down list

我必须说我不知道​​ ZapfDingbats 下面的这些字体是什么,但事实是这是PDF导出列表中的最后一种字体。

摘自com.itextpdf.text.FontFactoryImp课程作为证明:

ArrayList<String> tmp;
tmp = new ArrayList<String>();
tmp.add(FontFactory.COURIER);
tmp.add(FontFactory.COURIER_BOLD);
tmp.add(FontFactory.COURIER_OBLIQUE);
tmp.add(FontFactory.COURIER_BOLDOBLIQUE);
fontFamilies.put(FontFactory.COURIER.toLowerCase(), tmp);
tmp = new ArrayList<String>();
tmp.add(FontFactory.HELVETICA);
tmp.add(FontFactory.HELVETICA_BOLD);
tmp.add(FontFactory.HELVETICA_OBLIQUE);
tmp.add(FontFactory.HELVETICA_BOLDOBLIQUE);
fontFamilies.put(FontFactory.HELVETICA.toLowerCase(), tmp);
tmp = new ArrayList<String>();
tmp.add(FontFactory.SYMBOL);
fontFamilies.put(FontFactory.SYMBOL.toLowerCase(), tmp);
tmp = new ArrayList<String>();
tmp.add(FontFactory.TIMES_ROMAN);
tmp.add(FontFactory.TIMES_BOLD);
tmp.add(FontFactory.TIMES_ITALIC);
tmp.add(FontFactory.TIMES_BOLDITALIC);
fontFamilies.put(FontFactory.TIMES.toLowerCase(), tmp);
fontFamilies.put(FontFactory.TIMES_ROMAN.toLowerCase(), tmp);
tmp = new ArrayList<String>();
tmp.add(FontFactory.ZAPFDINGBATS);
fontFamilies.put(FontFactory.ZAPFDINGBATS.toLowerCase(), tmp);