2011-02-23 50 views
9

我试图在jasper报告中显示ukranian字符作为pdf文件。但它不是以pdf格式显示的。在Jasper Report中未显示乌克兰(Cyrilic)字符PDF

当我将报告导出到所有其他格式,如html,csv..ukranian字符显示。

请帮帮我!

+0

用于导出的字体是否具有必需的字符?我不确定Jasper Report使用什么方法,但PDF文件通常包含用于生成它的字体 - 这意味着字体必须支持国际字符。 – Piskvor 2011-02-23 16:33:29

+0

http://maryniuk.blogspot.com/2010/09/custom-ttf-fonts-in-jasperreports。HTML这帮了我 – 2011-06-22 06:28:47

回答

8

首先,确保你有正确的编码:

JRPdfExporter exporter = new JRPdfExporter(); 
exporter.setParameter(JRExporterParameter.CHARACTER_ENCODING, "UTF-8"); 

那么你应该改变字体,以支持西里尔的。这是通过样式完成:

public void addPdfFontsToStyles(JRStyle[] styles) { 
    if (styles != null) { 
     for (JRStyle style : styles) { 
      if (style.getName().equals("reportStyle")) { 
       style.setPdfFontName("/com/yourcompany/fonts/times.ttf"); 
       style.setBlankWhenNull(true); 
      } 

      if (style.getName().equals("reportBoldStyle")) { 
       style.setPdfFontName("/com/yourcompany/fonts/timesbd.ttf"); 
       style.setBlankWhenNull(true); 
      } 

     } 
    } 
} 

并调用此方法addPdfFontsToStyles(jasperReport.getStyles());

当然,先决条件是:

  • 您的文字是用上面的样式名称之一
  • 你在类路径上有ttf文件

应该这样做它(我正在从工作cyrilic应用程序的代码)

+0

+1工作得很好 - 谢谢! – 01es 2012-11-02 19:25:04

2
  1. 注册字体在JVM

    Font myFont = Font.createFont(Font.TRUETYPE_FONT, new File("pathToCyrillicFont")); 
    GraphicsEnvironment.getLocalGraphicsEnvironment().registerFont(myFont); 
    
  2. 添加到西里尔场这样的:

    <textElement> 
        <font 
            fontName="fontName" 
            pdfFontName="pathToCyrillicFont" 
            size="13" 
            isBold="false" 
            isItalic="false" 
            isUnderline="false" 
            isPdfEmbedded ="true" 
            pdfEncoding ="Cp1251" 
            isStrikeThrough="false" 
        /> 
    </textElement> 
    

享受!

9

在iReport中设置一些文本字段属性。使用字体DejaVu Sans。设置pdf编码为Cp1251isPdfEmbeddedtrue

例:<font fontName="DejaVu Sans" isStrikeThrough="false" pdfEncoding="Cp1251" isPdfEmbedded="true" />

JasperReports的字体作为Maven的依赖性:

<dependency> 
    <groupId>net.sf.jasperreports</groupId> 
    <artifactId>jasperreports-fonts</artifactId> 
</dependency> 
+0

很棒的回答! – mist 2015-05-05 23:15:05

+0

3年后... pdfEncoding已弃用,但是jasperreports-fonts使用font-extensions如果您喜欢使用自己的字体,请参阅http://stackoverflow.com/questions/34041619/jasper-reports-pdf-doesnt-export-西里尔值/用于字体扩展的例子。 – 2016-01-18 17:04:46

相关问题