Fonts Jasper iReport在Chrome中生成的PDF中出现问题

Fonts Jasper iReport在Chrome中生成的PDF中出现问题,fonts,jasper-reports,export-to-pdf,chinese-locale,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"

我正在用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]:

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

某些chrome扩展会中断报告生成。这里有一个用于禁用你的chrome扩展的选项。 打开Chrome并再次运行代码,查看控制台中是否生成任何错误。 根据这一点,chrome中存在一个阻止中文和日文字母显示的缺陷。有更新您的chrome到它的最新版本。 尝试通过自定义和控制扳手图标>工具>编码>选择Unicode UTF-8在最新的chrome中设置 如果这些解决方案不起作用,请尝试将jasper更新为最新版本。我看到在看中文和日文时,jasper的旧版本有问题

更新-:
您在代码中使用的中文字体为pdfFontName=STSong Light。尝试使用any打印您的pdf,因为在Firefox中,您的中文理解为fontsMicrosoft YaHei和Yu Gottic两种字体的集合,但在Chrome中,即使启用了acrobat扩展,它也无法理解该语言。因此,您必须更改pdf中的中文字体名称。

请共享一个pdf示例。@mkl-这里有一个示例文件:[example.pdf]:尽管您使用ispdfedded=true,但字体在示例pdf中根本没有嵌入,既没有子集,也没有完整。Chrome可能根本无法访问字体STSong Light吗?@mkl-这就是我所担心的,Chrome无法访问,这很奇怪,但是Firefox、adobe、foxit、linux下的Chrome可以访问。无论如何,你对我如何嵌入这些cmap文件有什么想法吗?如果你喜欢,我可以给你字体。如果你认为这只是Jasper的问题,我可以接受,但我希望我能嵌入这些字体另外,越南语也可以,但它是.TTF字体。STSong是JAR中的一个.properties文件,似乎是cmap类型的字体。我不太熟悉字体,但字符映射似乎和TTF有很大不同。我想知道它是否可以嵌入?如果存在任何错误,其他浏览器也无法正确显示您的报告。-众所周知,pdf查看器会在后台尝试修复错误,但不同的查看器修复的错误集不同。因此,您错了,如果OP生成的报告不正确,它们仍可能在某些查看器中按预期显示,而在其他查看器中则会以不同的方式显示。尽管如此,这也可能只是一个chrome问题,在这种情况下,您提到的步骤可能会有所帮助。大多数时候chrome不支持pdf,甚至不支持一些css等。我大多数时候都遇到过此类问题。我曾经使用Firefox,但OP需要在chrome上运行它。我看到很多关于chrome在生成报告时不支持中文和日文的讨论。在这种情况下,报告可以在除chrome之外的所有浏览器中查看,然后我假设这个问题是因为chrome而发生的。很可能是chrome的问题,但不确定给出的数据,在创建的PDF中也可能存在问题。这就是我想指出的一切。@mkl,Kalana-我做了上面所有的事情,没有改变,但其中的一个链接确实让我觉得我应该在Linux下的Chrome中尝试它-它确实在那里工作。明天我将尝试制作一个这些中国PDF的小演示。以下是一个示例文件: