1

レポートを生成するために JasperReports をアプリケーションに埋め込んでいますが、JEditorPaneHtmlMarkupProcessor が任意の XHTML の書き込みを処理する方法にかなり不満があります。たとえば、ある時点で箇条書きリストを出力する必要がありましたが、それは実行されますが、実際の箇条書き文字と改行に変換されるため、テキストがかなり長い箇条書きでは、箇条書きではなく箇条書きに合わせてテキストが折り返されます。テキストの最初の文字。

これと同様の問題のため、XHTML コンテンツをグラフィックとしてレンダリングしてみようと思いました (flyingsaucer XHTML レンダラーを使用)。これにより、外観をより適切に制御できますが、まだ 1 つの問題があります。The Definitive Guide to JasperReportsによると、「JasperReports テンプレートと生成されたドキュメントのすべての配置とサイズ設定は、72 dpi のデフォルトの Java 解像度を使用して実行されます。」レンダリングされる個々の文字は、整数座標に配置する必要があるようです。72 dpi では、これは大した問題ではありません。最悪の場合、サブピクセルの位置決めエラーに相当するものであり、重大な結果にはなりません。ただし、PDF にレンダリングする場合、JasperReports はそれを 300 dpi まで拡大するため、一部の文字の水平位置が複数ピクセルずれる場合があります。

任意の XHTML のレンダリングを改善する方法はありますか、または JasperReports が 72 ではなく 300 dpi で配置とサイズ変更を実行するようにする方法はありますか?

4

1 に答える 1

0

私は最終的に、不可欠な文字位置を主張しないレンダラーを使用することでこれを解決しました: Swing の JEditorPane:

JEditorPane pane = new JEditorPane();
pane.setBorder(null);
pane.setSize(w, h);
pane.setContentType("text/html");
pane.setEditable(false);
pane.setText(html);
pane.paint(g2);
于 2009-12-29T18:27:48.733 に答える