3

jasperreportによって生成されたPDFでギリシャ文字を表示しようとしています。最初にXMLを作成し、次にxmlデータソースを作成してjasperに渡します。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:

 <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エンコーディングとして保存されている場合(例:&#x393;)。その値を渡すだけで、xmlはおそらく&を&ampに変更し、pdfでΓを取得します。utf文字\u03C6に置き換えると、「?」が表示されます。私のPDFで。XMLをファイルにエクスポートするときに、そのフィールドを表示する方法があることを知っています。文字を&amp;#x393;から変更します。&#x393;に戻る 、iReportにデータソースとしてインポートすると、欲しい文字が表示されます。

4

1 に答える 1

1

いくつかの調査の結果、PDFフォントが問題の原因であることがわかりました。私はバージョン3.6を使用していたので、バージョン3.7に切り替えて、フォントをPDFに埋め込むことができるようにし、ブログで説明されている方法を使用しました: リンク。 私はソリューション番号2(簡単な方法)を使用しましたが、太字、斜体などの適切なフォントを選択するには、ソリューション番号1を必ず確認してください。Arialフォントで十分でした。

于 2012-12-01T14:04:21.063 に答える