2013-12-11 24 views
4

我试图使用动态报告将报告导出为pdf格式,但波斯语字符不显示在pdf文件中。但我在xls文件或jasper查看器中没有这个问题。我已经尝试过这种方法,但它不起作用。我该怎么办?如何在PDF导出动态报告中编写UTF-8(波斯语)字符?

public void toPdf(String path){ 
    JasperPdfExporterBuilder pdfExporter = new ExporterBuilders() 
    .pdfExporter(path); 
    pdfExporter.setCharacterEncoding("UTF-8"); 
    try { 

     jasperReportBuilder.toPdf(pdfExporter); 
    } catch (Exception e1) { 
     logger.error("failed to create PDF", e1); 
    } 
} 

Excel导出: excel export

碧玉观众:

jasper viewer

PDF导出: enter image description here

+0

您是否在使用[字体扩展](http://jasperreports.sourceforge.net/sample.reference/fonts/index.html#fontextensions)? –

+0

我不直接使用jasper,但是我使用动态报告的StyleBuilder.setFontName(String)方法将字体设置为英文和波斯文字体。它会改变xls和jasper查看器中的字体,但在pdf中没有任何区别! – user2304200

+0

你使用* jrxml *文件吗?你在* Detail * band中添加字段的代码是什么? –

回答

4

我有同样的问题,并设法解决它,你可以请按照我的回答here 魔鬼是你处理字体的方式。使用this tutorial和fonts.xml更改编码Identity-H(它是区分大小写!)

0

我使用动态碧玉API并且每当PDF文件名我正在导出到Linux服务器就得到改变,如果它包含德国变音字符就像ä即使我将编码转换为UTF-8或ISO-8859-14,ISO-8859-15,ISO-8859-1等。

将动态jasper API(JasperConcatenatedReportBuilder)更改为ä PDF。

+0

问题解决了。我使用'Arial Unicode MS'字体并在类路径中添加了ARIALUNI.TTF,fonts.xml文件。 font.xml包括下面代码 - <?XML版本= “1.0” 编码= “UTF-8”?> \t \t \t ARIALUNI.TTF \t \t 身份-H \t \t \t \t \t \t \t \t

相关问题