2011-02-23 133 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

相關問題