Joh*_*ohn 5 fonts jasper-reports export-to-pdf chinese-locale
我正在使用 Jasper iReport 5 中的条件格式生成中文以及其他几种语言的文档。我的 lib 文件夹中有 iTextAsian.jar。生成的 PDF 在 IE、Firefox、Adobe、Foxit 中显示中文,但在Chrome 中不显示。
在 Chrome 中,所有中文字符都丢失了。我将 isPdfEmbedded 设置为 true。这是我分配给中文字段的样式。我没有嵌入吗?
<style name="DynamicFont" isDefault="true" forecolor="#000000" backcolor="#FFFFFF" isBlankWhenNull="false" fontName="SansSerif" isBold="false" isItalic="false" isUnderline="false" isStrikeThrough="false" pdfFontName="Helvetica" isPdfEmbedded="true">
<conditionalStyle>
<conditionExpression><![CDATA[$F{locale}.toString().compareToIgnoreCase("am_ET") == 0]]></conditionExpression>
<style mode="Transparent" forecolor="#000000" fontName="SansSerif" pdfFontName="Amharic-Eng-Regular.ttf" pdfEncoding="Identity-H" isPdfEmbedded="true"/>
</conditionalStyle>
<conditionalStyle>
<conditionExpression><![CDATA[$F{locale}.toString().compareToIgnoreCase("vi_VN") == 0]]></conditionExpression>
<style mode="Transparent" forecolor="#000000" fontName="SansSerif" pdfFontName="customizationsFonts/Roboto-Regular.ttf" pdfEncoding="Identity-H" isPdfEmbedded="true"/>
</conditionalStyle>
<conditionalStyle>
<conditionExpression><![CDATA[$F{locale}.toString().compareToIgnoreCase("zh_CN") == 0]]></conditionExpression>
<style mode="Transparent" forecolor="#000000" fontName="SansSerif" pdfFontName="STSong-Light" pdfEncoding="UniGB-UCS2-H" isPdfEmbedded="true"/>
</conditionalStyle>
</style>
Run Code Online (Sandbox Code Playgroud)
这是 Chrome 问题还是关于我使用 iReport 生成 PDF 的方式?
非常感谢您的时间和耐心。
约翰
- 编辑 -
这是一个示例文件:[example.pdf]:http : //www.easleybooks.com/example.pdf
我假设您的代码中没有错误,因为如果存在任何错误,其他浏览器也无法正确显示您的报告。您可以尝试这些步骤来避免您的问题。
如果这些解决方案不起作用,请尝试将 jasper 更新到最新版本。我发现旧版本的 jasper 在查看中文和日文时存在问题。
更新-:pdfFontName="STSong-Light"您已在代码中
使用了中文字体。尝试使用任何中文简体字体来打印您的pdf,因为在Firefox中,您的中文被理解为两种字体(微软雅黑和Yu Gothic)的集合,但在Chrome中,即使启用了acrobat扩展,它也无法理解该语言。您必须更改 pdf 中的中文字体名称。