web-dev-qa-db-ja.com

PDF 1920x1080の画像に変換

PDFをconvertを使用してPNG画像に変換します。画像は?x1080の比率を持つことによって1920x1080の比率に適合し、最高の品質を持つ必要があります。

以下は、convertで使用できる多くのオプションです。 https://imagemagick.org/script/command-line-options.php#append


  • 最初に私は次のコマンドラインを試しました:

convert my.pdf -geometry 1920x1080 -size 1920x1080 -density 1920x1080 my_resized_pdf.png

コマンドの結果は、良好な形状(763x1080)の画像を提供しますが、低品質にしたくありません。

enter image description here

  • 次のように、geometryパラメータなしで変換コマンドラインを使用します。

convert my.pdf -size 1920x1080 -density 1920x1080 my_resized_pdf.png

結果の品質はまさに私が望むものですが、解像度は1920x1080の比率ではなく、842x595です。 1920x1080の比率では高さに正確に適合しません。

enter image description here

PDFから100%の品質で?x1080の比率のPNG画像を取得することは可能ですか?または842x595が100%の品質の画像を取得する最大の比率ですか?DPIを設定する必要がありますか? convertのオプション?

6
Alrick

これには試行錯誤が含まれ、最終的には、「最良の結果」であると見なすことができる結果については議論の余地があります。ですから、いくつかの一般的なアドバイスをさせてください:

  • 透明な背景を取り除くには、-flattenオプションを使用します。透明性により、結果の実際の品質を判断することが難しくなります。最終的な画像の透明度が必要な場合は、品質が確認できたら-flattenを削除できます。

  • -density 300などを使用して、高いDPI結果を取得します。 convertの主な問題は、デフォルトで非常に低い密度を使用することです(72 DPI)。このパラメーターは、入力ファイルの前に指定する必要があります。

  • 高DPI画像を縮小すると、さらにぼかしが生じる可能性があるため、おそらく正しいDPI値を計算して目的の解像度を実現するのがよいでしょう。

    $ convert -density 100 file.pdf -flatten file100.png
    $ file file100.png
    file100.png: PNG image data, 827 x 1169, 8-bit colormap, non-interlaced
    $ echo $((1080*10000/1169))
    9238
    $ convert -density 92.38 file.pdf -flatten file9238.png
    $ file file9238.png
    file9238.png: PNG image data, 764 x 1080, 8-bit colormap, non-interlaced
    

convertが「理想的な」DPI値を単独で決定する方法があるかどうかはわかりません。

この質問をImageMagick IRCチャネルまたはフォーラムに持っていくと、さらにアドバイスが得られるはずです。使用しているPDFファイルへのリンクを提供すると役立ちます。 ;)

空の境界線をトリミングするなど、他の方法で品質を向上させることもできます。ページの半分が白の場合、解像度が大幅に低下します。 PDFテキストを再ラップして、利用可能な画面スペースを最大限に活用するソリューションもあります(例:k2pdfopt)。

最後に、他のプログラムも試してください。これは意見の問題ですが、私はInkscapeまたはGhostScriptを直接使用することを好みます。 ImageMagickには文字が「くっついている」ため、Inkscapeではよりバランスの取れた結果が得られ、GhostScriptではぼかしのない純粋なピクセル画像をレンダリングできます(それが好きな場合-ぼやけたバージョンにはpngalphaを使用します。 convertと同じです)。

ImageMagick:

ImageMagick

Inkscape:

Inkscape

GhostScript:

gs -r92.38 -sDEVICE=png48 -sOutputFile=ghostscript.png file.pdf

GhostScript

6
frostschutz

試してください:

convert -resize 1920x1080  in.pdf   out.png

PDFに10ページがある場合、10個のファイルが出力されますout-1.png ... out-10.png

この答えは無視してください:ラスターファイルのサイズ変更に役立ちますが、PDFファイル(低DPIアップスケール))の結果が非常にぼやけています。

1
JJoao