Jasper iReport中的问题在Chrome中生成的PDF

问题描述 投票:1回答:1

我正在使用Jasper iReport 5中的条件格式来生成中文以及其他几种语言的文档。我的lib文件夹中有iTextAsian.jar。生成的PDF在IE,Firefox,Adobe,Foxit中显示中文,但not 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

pdf fonts pdf-generation ireport chinese-locale
1个回答
1
投票

我假设您的代码中没有错误,因为如果存在任何错误,其他浏览器也将无法正确显示您的报告。在那里,您可以尝试这些步骤来避免问题。

  1. 您的某些Chrome扩展程序会中断您的报告生成。可以停用您的Chrome扩展程序。
  2. 打开您的Chrome developer tools,然后再次运行您的代码,查看控制台中是否发生任何错误。
  3. 据此discussion,Chrome中存在一个错误,导致无法显示中文和日文字母。在那里可以将您的chrome更新到最新。
  4. 尝试通过自定义和控制(扳手图标)>工具>编码>选择Unicode(UTF-8)]在最新的Chrome中设置设置>
  5. 如果这些解决方案不起作用,请尝试将jasper更新到最新版本。在查看中文和日文时,我发现旧版本的jasper存在问题。


更新-:

您已在代码中将中文字体用作pdfFontName="STSong-Light"。尝试使用任何Chinese simplified font来打印pdf,因为在Firefox中,您的中文被理解为两种字体(Microsoft YaHei和Yu Gothic)的集合,但是在Chrome中,即使启用了acrobat扩展,它也无法理解该语言。 您必须在pdf中更改中文字体名称
© www.soinside.com 2019 - 2024. All rights reserved.