2015-11-26 32 views
5

Ho nel codice un campo di testo con il valore

":$£Ω€απ⅔:" 

per verificare se questi personaggi mostreranno in PDF

ma solo stampe come

:$£€: 

Ho provato a cambiare la font a "Symbol" ma questo non fa il trucco.

Nota: sto utilizzando iReport 5.5

+0

Si sta utilizzando [Estensioni font] (http://jasperreports.sourceforge.net/sample.reference/fonts/)? –

risposta

14

ho provato i vostri personaggi utilizzando font-extensions a iReport, Questi sono i passi che ho preso

  1. Download (o utilizzare uno sul vostro pc) la tua desiderato font ttf (ha bisogno di supportare i caratteri), ho usato dejavu-serif.
  2. Installare il tipo di carattere in iReport o in Jasper soft studio (fare clic sui collegamenti per capire come)

    • ho usato iReport 5.6 e ho impostato il PDF-Encoding: idenity-H (unicode con la scrittura orizzontale) e incorporato il font in pdf. Questo è stato il codice della mia textField

      <textField> 
          <reportElement x="8" y="15" width="100" height="20" uuid="41dc1200-091f-4799-a1d2-4622f88a0e84"/> 
          <textElement> 
           <font fontName="DejaVu Serif" size="13"/> 
          </textElement> 
          <textFieldExpression><![CDATA[":$£Ω€απ⅔:"]]></textFieldExpression> 
      </textField> 
      
  3. Esporta l'estensione del carattere (questo crea un .jar)

  4. Aggiungere il vaso al classpath.
  5. Esporta in pdf e goditi il ​​risultato.

Result

Questo è un esempio di come utilizzare qualsiasi tipo di carattere arbitrario, se vi piace di uso DejaVu Sans o DejaVu Serif solo è possibile includere il jasper report fonts library nel classpath, quindi questi caratteri sono già inclusi e mappato in libreria

+0

Nel mio caso, ho spacchettato quel jar e inserito il suo contenuto in src/main/resources, altrimenti dovrete giocare con l'aggiunta di JAR al vostro progetto Maven, cosa che non è banale. – walv

+0

Correndo nello stesso problema. Prima di cambiare i miei rapporti per usare DejaVu Sans, qualcuno può spiegare perché questo sta accadendo? – Thomas

+0

@Thomas puoi controllare i commenti su questa [risposta] (https://stackoverflow.com/a/35549391/5292302), itext la libreria che genera il pdf, ha bisogno del file .ttf e sa quale codifica stai usando per creare correttamente il pdf. –

1
JRDesignStyle normalStyle = new JRDesignStyle(); 
     normalStyle.setName("tahoma"); 
     normalStyle.setDefault(true); 
     normalStyle.setFontName("../tahoma_0.ttf"); 
     normalStyle.setPdfFontName("../tahoma_0.ttf"); 
     normalStyle.setPdfEncoding("Identity-H"); 
     normalStyle.setPdfEmbedded(true); 
     . 
     . 
     jasperPrint.addStyle(normalStyle); 
1

avevo postato una domanda simile e il sopra t echnique ha risolto il mio problema, fino a quando un bel giorno ho riavviato il contesto di JasperServer. Stavo ricevendo l'errore "PDF encoding not found" quando ho provato ad esportare il report in pdf.

Per risolvere questo problema ho dovuto copiare iText-Asian.jar e Font-extension.jar nella cartella lib del contesto jasperserver. "jasperserver/WEB-INF/lib". Una volta fatto ricomincia il contesto e il problema risolto.

Spero che aiuti qualcuno.