213

PDFドキュメントの一部を画像ファイルにレンダリングするには、どのようなライブラリ、拡張機能などが必要ですか?

私が見つけたほとんどの PHP PDF ライブラリは、PDF ドキュメントの作成を中心にしていますが、ドキュメントを Web での使用に適した画像形式にレンダリングする簡単な方法はありますか?

私たちの環境は LAMP スタックです。

4

10 に答える 10

242

あなたが必要ImageMagickとし、GhostScript

<?php
$im = new imagick('file.pdf[0]');
$im->setImageFormat('jpg');
header('Content-Type: image/jpeg');
echo $im;
?>

[0]手段page 1。_

于 2009-01-22T01:57:08.460 に答える
37

なんらかの理由で ImageMagick を持っていない人のために、GhostScript と組み合わせて GD 関数も機能します。で Ghostscript コマンドを実行しexec()て PDF を JPG に変換し、結果のファイルを で操作しますimagecreatefromjpeg()

次の Ghostscript コマンドを実行します。

exec('gs -dSAFER -dBATCH -sDEVICE=jpeg -dTextAlphaBits=4 -dGraphicsAlphaBits=4 -r300 -sOutputFile=whatever.jpg input.pdf')

操作するには、新しいプレースホルダー イメージを作成$newimage = imagecreatetruecolor(...)し、現在のイメージを取り込みます。$image = imagecreatefromjpeg('whatever.jpg')を使用imagecopyresampled()して、サイズを変更したり、その他の組み込みの非imagemagickコマンドをいくつでも変更できます。

于 2011-03-07T15:10:52.023 に答える
33

を使用してページ数を取得することもできます

$im->getNumberImages();

次に、ループを使用してすべてのページのサムを作成できます。

'file.pdf['.$x.']'
于 2009-01-24T08:25:37.363 に答える
11

Blob から PDF を読み込んでいる場合、最後のページではなく最初のページを取得する方法は次のとおりです。

$im->readimageblob($blob);
$im->setiteratorindex(0);
于 2011-06-14T04:23:33.727 に答える
10

imagemagick に付属の「convert」ユーティリティを実行することもできます。

exec("convert pdf_doc.pdf image.jpg");
echo 'image-0.jpg';
于 2012-05-17T13:17:10.063 に答える
3

インストール完了!うまくいきました!

Windowsにimagemagickをベースインストールする場合があります。

使用中のphp (local)呼び出しexec(<command line>) 例:

<?php
$pdf = "filename.pdf";
$info = pathinfo($pdf);
$file_name =  basename($pdf,'.'.$info['extension']);
echo $file_name;
$pdf = "filename.pdf[0]";
exec("convert $pdf convert-img/$file_name.jpg");    
?>

また、PHP Imagick クラスclass imagickで使用することもできます

ありがとう、みんな助けてくれた!

于 2012-04-07T15:05:49.920 に答える
1

これは、いくつかのプロジェクトで作成して使用した単純なクラスです。imagick各ページのディスクへの書き込みをラップして処理するだけです。これを行う簡単な方法をまだ探している人がいれば、このリンクが役立つかもしれません。

于 2012-05-11T17:01:57.470 に答える