Pas*_*eli 2 jasper-reports asianfonts dynamic-jasper
由DynamicJasper生成的我的PDF现在看起来完全符合预期,我只面临一个问题:在生成的PDF中根本不显示亚洲字符.任何其他角色都可以.我可以在调试器中验证字符串是否正确放置在JRDataSource中,而Jasper确实在报告中为它们生成了行,但文本本身完全缺失.
将DynamicJasper与亚洲文本元素一起使用时,是否还需要考虑其他一些编码设置?
感谢您的任何建议和最好的问候
好的,这就是一步一步解决问题的方法:
1.)将Arial Unicode MS字体扩展名JAR添加到类路径(或任何其他等效的unicode字体).可以在这里找到一个"官方"的,然而我最终使用了这个.如果您正在使用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
Run Code Online (Sandbox Code Playgroud)
<dependency>
<groupId>ar.com.fdvs</groupId>
<artifactId>DynamicJasper-arial-unicode-fonts</artifactId>
<version>1.0</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)
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>
Run Code Online (Sandbox Code Playgroud)
3.)启用"Identity-H"Jasper PDF编码:
static {
JRProperties.setProperty("net.sf.jasperreports.default.pdf.encoding", "Identity-H");
}
Run Code Online (Sandbox Code Playgroud)
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);
// ...
Run Code Online (Sandbox Code Playgroud)
那是一些烦人的废话: - /...
| 归档时间: |
|
| 查看次数: |
2159 次 |
| 最近记录: |