Itext を使用して、解像度 150 dpi の画像を含む PDF ドキュメントを生成できます。
(Itext が画像の品質を 72 dpi に落としているようです。)
ありがとう
Itext を使用して、解像度 150 dpi の画像を含む PDF ドキュメントを生成できます。
(Itext が画像の品質を 72 dpi に落としているようです。)
ありがとう
このスレッド、特に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 インチで印刷されます。
特に、一部の画像タイプの「解像度」を設定できる Adobe Photoshop などの画像処理プログラムに慣れている場合はなおさらです。残念ながら、これは「印刷のヒント」に過ぎず、実際にはファイルをそれほど変更しません。72DPI の 100x100 ピクセルの画像は、印刷時を除いて、300DPI の 100x100 ピクセルの画像とまったく同じです。iText は、この印刷ヒントを完全に無視します。これがすべてであるか、すべての画像フォーマットがサポートしているわけではないためです。(直接関係はありませんが、一般的な神話の 1 つは、「Web 用に保存」を使用すると、実際にはファイルから解像度情報が完全に取り除かれているのに、画像が 72DPI になるというものです。)
実際に何が起こっているかを無視して、画像を 150 DPI と考えるには、ソース画像の幅と高さをピクセル単位で取得し、それらを0.48
(72 ÷ 150) で乗算して、それらの新しい数値を に渡しscaleAbsolute()
ます。
Image
呼び出されたクラスにはメソッドがありますが、setDPI
私が知る限り、それは実際には画像の配置に影響を与えず、より情報的なものです。
PDFで画質が悪い場合。次のことができます:
これで私の問題は解決しました。