【问题标题】:DynamicJasper and Asian charactersDynamicJasper 和亚洲字符
【发布时间】:2013-04-10 15:29:48
【问题描述】:

我的由 DynamicJasper 生成的 PDF 现在看起来完全符合预期,我只面临一个问题:生成的 PDF 中根本不显示亚洲字符。任何其他字符都可以正常工作。我可以在调试器中验证字符串是否正确放置在 JRDataSource 中,Jasper 实际上确实在报告中为它们生成了行,但文本本身完全丢失了。

在将 DynamicJasper 与亚洲文本元素结合使用时,是否需要考虑一些额外的编码设置?

感谢您的建议和问候

【问题讨论】:

    标签: jasper-reports dynamic-jasper asianfonts


    【解决方案1】:

    好的,这就是逐步解决问题的方法:

    1.) 将 Arial Unicode MS 字体扩展 JAR 添加到您的类路径(或任何其他等效的 unicode 字体)。可以在here 找到一个“官方”,但是我最终使用了this one。如果您使用的是 maven,则可以使用以下 mvn 命令行和 POM 条目将文件添加到您的类路径:

    mvn install:install-file -Dfile=DynamicJasper-arial-unicode-fonts-1.0.jar -DgroupId=ar.com.fdvs -DartifactId=DynamicJasper-arial-unicode-fonts -Dversion=1.0 -Dpackaging=jar
    
    <dependency>
        <groupId>ar.com.fdvs</groupId>
        <artifactId>DynamicJasper-arial-unicode-fonts</artifactId>
        <version>1.0</version>
    </dependency>
    

    2.) 将 spring-core 和 spring-beans 添加到项目中(如果尚未存在):

    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-core</artifactId>
        <version>3.2.2.RELEASE</version>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-beans</artifactId>
        <version>3.2.2.RELEASE</version>
    </dependency>
    

    3.) 启用“Identity-H”Jasper PDF 编码:

    static {
        JRProperties.setProperty("net.sf.jasperreports.default.pdf.encoding", "Identity-H");
    }
    

    4.) 将 Arial Unicode MS 配置为您的 DynamicJasper 字体(例如,用于行):

    // ...
    final DynamicReportBuilder dynamicReportBuilder = new DynamicReportBuilder();
    final Style style = new Style();
    style.setFont(new Font(Font.MEDIUM, "Arial Unicode MS", false));
    dynamicReportBuilder.setDefaultStyles(null, null, null, style);
    // ...
    

    那是一些令人讨厌的废话:-/ ...

    【讨论】:

    • 确实烦人的废话,它没有使用 JVM 中可用的字体:/ 幸运地找到了这个线程。
    【解决方案2】:

    您可能需要配置 jasper 报告导出器以在 pdf 文件中嵌入特殊字体。还要检查 ck pdf 字符编码

    【讨论】:

    • 您好 Dj,感谢您的意见。看起来,PDF 字体嵌入不是必需的。只是我同时尝试了 unicode 字体和“Identity-H”编码,只是没有同时尝试:-S .
    • 我发现如果生成PDF,嵌入实际上是必要的。添加 Unicode 字体作为依赖项和 Identity-H 编码适用于屏幕内演示,但 PDF 需要包含字体。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多