fonts - Jasper iReport 中的问题在 Chrome 中生成 PDF
问题描述
我正在使用 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>
这是 Chrome 问题还是与我使用 iReport 生成 PDF 的方式有关?
非常感谢您的时间和耐心。
约翰
- 编辑 -
这是一个示例文件:[example.pdf]:http ://www.easleybooks.com/example.pdf
解决方案
我假设您的代码中没有错误,因为如果存在任何错误,其他浏览器也无法正确显示您的报告。在那里,您可以尝试这些步骤来避免您的问题。
- 您的某些 chrome 扩展程序会中断您的报告生成。在那里禁用您的 chrome 扩展。
- 打开您的 Chrome开发人员工具并再次运行您的代码,看看控制台中是否生成任何错误。
- 根据这个讨论,chrome 中存在一个错误,阻止显示中文和日文字母。在那里将您的 chrome 更新到最新版本。
- 尝试通过自定义和控制(扳手图标)>工具>编码>选择Unicode(UTF-8)在最新的chrome中设置设置
如果这些解决方案不起作用,请尝试将 jasper 更新到最新版本。在查看中文和日文时,我发现旧版本的 jasper 存在问题。
更新 - :
您pdfFontName="STSong-Light"
在代码中使用了中文字体。尝试使用任何简体中文字体打印您的 pdf,因为在 Firefox 中,您的中文理解为两种字体(Microsoft YaHei 和 Yu Gothic)的集合,但在 Chrome 中,即使启用了 acrobat 扩展,它也无法理解该语言。在那里你必须在你的 pdf 中更改你的中文字体名称。
推荐阅读
- python - pyinstaller“执行脚本失败”
- google-app-engine - 您的应用不在您的 GOPATH 上 - 部署到 app Engine go1.12
- elasticsearch - 是否可以通过 elasticsearch-py 接收压缩响应?
- javascript - 在 JavaScript 类中引用静态变量
- javascript - 使用 Vue JS 从不同的路由发送 props 到同一个组件
- laravel - Laravel 发送预定的电子邮件,其中包含最近 24 小时收到的错误计数的消息行
- xquery - Xquery 中的 XSLT 风格的小型转换?
- java - 在 Spring Boot 应用程序中使用 AspectJ Load Time Weaving 时构建结果不一致
- javascript - 如何使用 javascript 提取模式并将其嵌入到 span 元素中?
- elasticsearch - 心跳 icmp 配置主机别名