2011-02-23 8 views
9

Estoy tratando de mostrar el carácter ukraniano en el informe jaspe como un archivo pdf. pero no está dialogando en formato pdf.Caracteres de Ucrania (Cyrilic) que no se muestran en Jasper Informe PDF

cuando exporto informe a todos los demás formatos como html, csv..ukranian char se está mostrando.

por favor ayuda!

+0

¿Las fuentes utilizadas para la exportación tienen los caracteres necesarios? No estoy seguro de qué método usa el Informe Jasper, pero el archivo PDF generalmente contiene la fuente utilizada para generarlo, lo que significa que la fuente debe admitir caracteres internacionales. – Piskvor

+0

http://maryniuk.blogspot.com/2010/09/custom-ttf-fonts-in-jasperreports.html esto me ayudó –

Respuesta

8

En primer lugar, asegúrese de que usted tiene la codificación correcta:

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

entonces debería cambiar las fuentes a las que apoyan cirílico. Esto se hace a través de estilos:

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); 
      } 

     } 
    } 
} 

e invocar este método con addPdfFontsToStyles(jasperReport.getStyles());

Por supuesto, los requisitos son:

  • su texto está basado en uno de los nombres de los estilos anteriores
  • se tener los archivos ttf en classpath

Eso debería hacer (yo estoy tomando el código de una aplicación de cyrilic de trabajo)

+0

+1 Funcionó muy bien - ¡gracias! – 01es

2
  1. fuente registro en JVM

    Font myFont = Font.createFont(Font.TRUETYPE_FONT, new File("pathToCyrillicFont")); 
    GraphicsEnvironment.getLocalGraphicsEnvironment().registerFont(myFont); 
    
  2. añadir a este campo cirílico:

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

Disfrute !

9

Establezca algunas propiedades de campo de texto en iReport. Use la fuente DejaVu Sans. Establezca la codificación de PDF en Cp1251 y isPdfEmbedded en true.

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

JasperReports fuentes como la dependencia Maven:

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

¡¡excelente respuesta !!! – mist

+0

3 años después ... pdfEncoding está en desuso, sin embargo, jasperreports-fonts usa font-extensions si desea usar su propia fuente, consulte http://stackoverflow.com/questions/34041619/jasper-reports-pdf-doesnt-export- cirílico-valores/para el ejemplo de extensión de fuente. –

Cuestiones relacionadas