0

さて、ここに私の問題があります:

「きれいな」レポート出力を作成するために FOP を使用します。ユーザーがファイルを必要とする場合は pdf オプションを使用し、プレビューには AWT を使用し、それらを印刷するには -print オプションを使用します。FOP 0.25.x を使用していますが、これが最新バージョンではないことは十分に認識していますが、0.95 へのアップグレードは、必ずしも実行したくない簡単な作業ではないようです。

とにかく、ユーザーの 1 人が、(FOP -print オプションで生成された) ID カードを ID カード プリンターで印刷するときに、カードの画像 (従業員の写真) に何らかの破損があることに気付きました...緑と赤の点と線のように。また、まったく同じ印刷要求を HP カラー レーザー ジェットの 1 つに送信すると、正常に印刷されることもわかりました。さらに奇妙なことに、FOP を使用して ID カードの PDF を作成し、カード プリンターで acrobat リーダーを介して印刷すると、問題なく印刷されます。

最終的に、それが画像のスケーリングと関係があることを発見しました...高さ600pxの画像を120px程度に縮小していました。画像のサイズを半分にするだけでも、画像のサイズを小さくすると、破損が著しく減少しました。同様に、画像を拡大すると、破損が増加しました。

だから私の質問: ここで何が起こっているのか誰か知っていますか? または、そのようなことに遭遇したことがありますか?

なぜこれが起こっているのかわからないので、根本的な原因を修正する方法はわかりませんが、いくつかのさまざまな回避策に取り組んできました。

1) FOP を使用して画像の pdf を作成し、それを Java 経由で印刷します。これは明らかな答えのように思えますが、Java 経由で PDF を印刷することは簡単ではないことをグーグルで調べたところです。java.net で PDF Renderer プロジェクトを見たことがありますが、非常に特殊な単一のアプリケーションではかなりかさばるようです。

2) FOP に渡す前に画像のサイズを変更してみてください。これも非常に簡単に見えましたが、さまざまなユーザーがこれらの ID カードのスタイルシートを好きなようにセットアップでき、「pt」と「in」のサイズを使用するのはかなり一般的なようです...私は良い方法を知りませんそれをピクセルのサイズ変更にマップします。

誰かが根本的な原因、これらの回避策を機能させる方法、および/または別のアイデアについての洞察を持っている場合、あなたは私の借金になります.

4

2 に答える 2

0

私は元の質問で言及した2番目のことをしました...つまり、FOPに渡す前にサイズを変更しました。印刷先のプリンターの dpi を取得し、それを計算してピクセル サイズを取得できることがわかりました。私のすべてのテストで完全に機能しているようです...実際の解決策ではなく、適切な回避策です。

于 2009-05-08T18:38:40.387 に答える