Я пытаюсь отобразить греческие буквы в PDF, сгенерированном jasperreport. Сначала я создаю XML, затем источник данных xml и передаю его в jaspper. XML:
Document doc = DocumentBuilderFactory.newInstance().newDocumentBuilder().newDocument();
....
Element analysisElement = doc.createElement("Analysis");
//text value is from the database
Text analysisText = doc.createTextNode(anayisisObject.getName());
analysisElement.appendChild(analysisText);
Источник данных:
JRXmlDataSource xmlDataSource = new JRXmlDataSource(doc,"/ReportFailedAnalysis");
Текстовое поле JRXML:
<textField isStretchWithOverflow="true">
<reportElement style="obicni" positionType="Float" x="0" y="0" width="203" height="12"/>
<textElement markup="styled">
<font fontName="Arial" size="9" pdfEncoding="Cp1250"/>
</textElement>
<textFieldExpression class="java.lang.String"><![CDATA[$F{Analysis}]]>
</textFieldExpression>
</textField>
Кодировка базы данных — Cp1250, если это важно, а греческие буквы сохраняются как кодировка html, например Γ. Если я просто передам это значение, xml, вероятно, изменит & на &, и я получу Γ в своем PDF-файле. Если я заменю его символом utf φ, я получу "?" в моем PDF. Я знаю, что есть способ отобразить это поле, потому что, когда я экспортирую XML в файл, меняю символ с #x393; вернуться к Γ, импортировать его как источник данных в iReport, я получаю письмо, которое хочу.