19

Itext を使用して、解像度 150 dpi の画像を含む PDF ドキュメントを生成できます。

(Itext が画像の品質を 72 dpi に落としているようです。)

ありがとう

4

2 に答える 2

50

このスレッド、特にPDF には DPI の概念がないことを説明するこの投稿を参照してください。このスレもよく読まれています。

本質的に(これは技術的に正確ではありませんが、十分に近いです)、デフォルトで iText を使用して画像を配置すると、72 ピクセルごとに 1 インチの印刷スペースが使用されると想定されます。このルールを変更したい場合は、画像のmatrix. これを直接行うか (難しい)、 、 、 、 などのスケーリング方法を使用する (はるかに簡単)scaleAbsolute()ことscaleAbsoluteWidth()scaleAbsoluteHeight()できscalePercentage()ます scaleToFit()

マトリックスを変更しても、画像はまったく変更されません。(本質的に) 1 インチに詰め込むピクセル数の定義が変更されるだけです。これを印刷すると DPI と呼ばれます。(実際には、画像ピクセルとドキュメントのユーザー単位の関係を変更していますが、実際にはそれを知る必要はありません。)したがって、デフォルトでは、iText によって配置された 200x200 ピクセルの画像は、約 2 3/4 インチで印刷されるはずです。呼び出すscaleAbsolute(100,100)と、これらの 200 ピクセルが 100 の「ユーザー ユニット」に詰め込まれ、実効 DPI が 144 になり、約 1 3/8 インチで印刷されます。

特に、一部の画像タイプの「解像度」を設定できる Adob​​e Photoshop などの画像処理プログラムに慣れている場合はなおさらです。残念ながら、これは「印刷のヒント」に過ぎず、実際にはファイルをそれほど変更しません。72DPI の 100x100 ピクセルの画像は、印刷時を除いて、300DPI の 100x100 ピクセルの画像とまったく同じです。iText は、この印刷ヒントを完全に無視します。これがすべてであるか、すべての画像フォーマットがサポートしているわけではないためです。(直接関係はありませんが、一般的な神話の 1 つは、「Web 用に保存」を使用すると、実際にはファイルから解像度情報が完全に取り除かれているのに、画像が 72DPI になるというものです。)

実際に何が起こっているかを無視して、画像を 150 DPI と考えるには、ソース画像の幅と高さをピクセル単位で取得し、それらを0.48(72 ÷ 150) で乗算して、それらの新しい数値を に渡しscaleAbsolute()ます。

Image呼び出されたクラスにはメソッドがありますが、setDPI私が知る限り、それは実際には画像の配置に影響を与えず、より情報的なものです。

于 2011-11-23T16:13:05.403 に答える
0

PDFで画質が悪い場合。次のことができます:

  1. 高解像度でより大きなサイズの画像を作成します。
  2. PDFファイルにエクスポートする際に画像を縮小します。

これで私の問題は解決しました。

于 2012-07-12T10:24:22.817 に答える