1. Report krmíte UTF-8, protože jí používá JAVA. Převod provedete v okamžiku načítání dat z databaze.

2. Někde v hlavičce reportu definujete fonty takto:
<reportFont name="Arial_Bold18" isDefault="false" fontName="Arial" size="18" isBold="true" isItalic="false" isUnderline="false" isStrikeThrough="false" pdfFontName="Helvetica-Bold" pdfEncoding="Cp1250" isPdfEmbedded="false"/>

Nic dalšího by nemělo být potřeba.

Petr Michálek

Gabriel Gajdos napsal(a):
Zdravím.

Riešime práve jednu vec s JasperReports...

Klasický scenár: report v JasperReports (iReport), kŕmime ho dátami a chceme z toho PDF na výstupe. Aby bola správna diakritika, bolo potrebné nastaviť vlastnosť TextFieldu „pdfEncoding“ na „Cp1250“...

Problém je však v tom, že náš report budeme kŕmiť dátami z databázy (UTF-8) a dáta budú obsahovať aj znaky špecifické pre iné znakové sady (typicky najmä pre zápdoeurópsku Cp1252).

Inými slovami: nevieme sa počas dizajnu rozhodnúť, v ktorej z týchto znakových sád bude PDF výstup vytvorený.

Počas behu viem dynamicky nastaviť pdfEncoding jednotlivých polí (cez Scriptlet), ale aj tak nevieme presne, na akú hodnotu to máme nastaviť.

V podstate vidím dve cesty, ale riešenie nemáme:
1. nastaviť nejaký unicode (čo však nejde, lebo vraj iText to nepodporuje, ale tu vidím trochu konflikt medzi tvrdením Jasper vs. iText vývojárov).

–> toto by bolo samozrejme preferované riešenie

2. Počas behu testovať dáta poľa a zisťovať znakovú sadu

–> nepoznám lepšie riešenie ako cez String.getBytes, prípadne Charset.encode a potom testovať počet otáznikov (?)...

–> je to trochu ohavnosť, ale lepšie riešenie nemáme...

Riešil to už niekto?

Má niekto lepší nápad?

Dík za názory.

GG


Odpovedet emailem