3

PHP と ImageMagick を使用して PDF から PNG への変換スクリプトを実行していますが、変換速度に問題があります。

非常に小さな PDF の場合、変換にかかる時間はそれほど長くありませんが、250kb のファイル (実際にはそれほど大きくはありません) の場合、変換に 20 分以上かかるため、機能することはわかっています。

PHPは次のとおりです。

//***** GET PATH TO IMAGEMAGICK *****
$path_to_imagemagick = trim(`which convert`);

//***** PATH TO PDF TO CONVERT *****
$path_to_pdf = getcwd() . "/pdf/myfile.pdf[0]";

//***** PATH TO OUTPUT TO *****
$output_path = getcwd() . "/pdfimage/test_converted.png";

@exec($path_to_imagemagick . " -density 72 -quality 60 -resize 150x " . $path_to_pdf . " " . $output_path);

これを速くするために変更できる設定はありますか?

それが役立つ場合、画像は PNG である必要はありません。JPEG の方が速い場合は、喜んでそちらを使用します。

4

1 に答える 1

8

ImageMagick だけでは、PDF をラスター イメージに変換することはできませ

ImageMagick はこのジョブにデリゲートを使用します。そのデリゲートはGhostscriptです。ImageMagick と同じシステムに Ghostscript をインストールしていない場合、PDF 変換は機能しconvertません。

速度を上げるには、ImageMagick for PDF -> ラスター イメージ変換を使用しないでください。代わりに、Ghostscript を直接使用してください (PHP 経由でも可能です)。

JPEG 出力のコマンド ライン:

gs                                 \
  -o ./pdfimage/test_converted.jpg \
  -sDEVICE=jpeg                    \
  -dJPEGQ=60                       \
  -r72                             \
  -dLastPage=1                     \
   pdf/myfile.pdf

PNG 出力のコマンド ライン:

gs                                 \
  -o ./pdfimage/test_converted.png \
  -sDEVICE=pngalpha                \
  -dLastPage=1                     \
  -r72                             \
   pdf/myfile.pdf 

これらのコマンドは両方とも、スケーリングされていない出力を提供します。

出力を縮小するには、次のようなものを使用できます

gs                                 \
  -o ./pdfimage/test_converted.png \
  -sDEVICE=pngalpha                \
  -dLastPage=1                     \
  -r72                             \
  -dDEVICEWIDTHPOINTS=150          \
  -dDEVICEHEIGHTPOINTS=150         \
  -dPDFFitPage                     \
   pdf/myfile.pdf 

また、注意してください:-quality 60 PNG 出力コマンドの設定を使用しました。しかし-quality、JPEG と-qualityPNG の出力は、ImageMagick ではまったく異なる意味を持ちます (それに気付いていないかもしれません)。これに関する詳細については、この回答も参照してください。

于 2012-09-24T21:53:05.500 に答える