好吧,我正在尝试导出一个PDF,其中将包含同时包含常规拉丁字符和表情符号的文本字段。文本是由用户通过html表单输入的,即使我从Java端重新获取了它们(我认为字符可能已损坏),我也可以确认在浏览器中正确显示了表情符号。不幸的是,尽管我尝试按照community.jaspersoft的步骤进行操作,但仍然没有得到预期的结果。
我尝试了什么:
从JasperSoft Studio导出了一个包含所有字体(ttfs)的jar,编译了jrxml并将它们包括在类路径中,但是表情符号在PDF中仍以空格的形式出现。
我已从此github link下载了用于表情符号的ttf,并从here下载了dejavu
我还没有尝试过:
所以主要问题是那是否可行,因为我可以看到其他人在没有适当答案的情况下寻找同一问题,如果没有,我还有其他可以尝试的方法吗?
谢谢。
答案 0 :(得分:1)
JAR中有一个文件 fonts / fontsfamily [someRandomNumber] .xml ,该文件是从JasperSoft Studio导出的带有TTF字体的。查看文件,确保在pdfEmbedded
上设置了true
,在pdfEncoding
上设置了Identity-H
。
例如,在我的情况下,没有pdfEncoding
元素,然后表情符号被渲染为空格,但是当我添加<pdfEncoding>Identity-H</pdfEncoding>
表情符号时,渲染正确。
以下是该XML文件的示例:
<?xml version="1.0" encoding="UTF-8"?>
<fontFamilies>
<fontFamily name="OpenSansEmoji">
<normal>fonts/OpenSansEmoji/OpenSansEmoji.ttf</normal>
<pdfEmbedded>true</pdfEmbedded>
<pdfEncoding>Identity-H</pdfEncoding>
<exportFonts/>
</fontFamily>
</fontFamilies>