PDFドキュメントの一部を画像ファイルにレンダリングするには、どのライブラリ、拡張機能などが必要ですか?
私が見つけたほとんどのPHP PDFライブラリはPDFドキュメントの作成を中心にしていますが、Webでの使用に適した画像形式にドキュメントをレンダリングする簡単な方法があります?
私たちの環境はLAMPスタックです。
ImageMagick
および GhostScript
が必要です
<?php
$im = new imagick('file.pdf[0]');
$im->setImageFormat('jpg');
header('Content-Type: image/jpeg');
echo $im;
?>
[0]
はpage 1
を意味します。
何らかの理由でImageMagickをお持ちでない場合、Gd関数もGhostScriptと連携して動作します。 exec()
を使用してghostscriptコマンドを実行して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
コマンドを組み込みます
を使用してページ数を取得することもできます
$im->getNumberImages();
次に、ループを使用して、すべてのページのサムを作成できます。
'file.pdf['.$x.']'
PHP拡張機能 Imagick を使用します。ラスター出力画像の目的のサイズを制御するには、 setResolution function を使用します
<?php
$im = new Imagick();
$im->setResolution(300, 300); //set the resolution of the resulting jpg
$im->readImage('file.pdf[0]'); //[0] for the first page
$im->setImageFormat('jpg');
header('Content-Type: image/jpeg');
echo $im;
?>
(Paolo Bergantino氏の回答とLuis Melgratti氏のコメント。画像を読み込む前に解像度を設定する必要があります。)
BLOBからPDFをロードする場合、これは最後のページではなく最初のページを取得する方法です。
$im->readimageblob($blob);
$im->setiteratorindex(0);
Imagemagickに付属している「変換」ユーティリティを実行してみることもできます。
exec("convert pdf_doc.pdf image.jpg");
echo 'image-0.jpg';
私は PDFlib の作成者です。これは GhostScript phpのラッパーです。このライブラリを使用する利点は、既にテストされており、ImageMagic
を必要としません
Pdfに関しては、GhostScript
コマンドは常にImageMagic
よりも高速なので、GhostScriptラッパーまたは純粋なGhostScriptコマンドを使用する必要があります。
$pdflib = new ImalH\PDFLib\PDFLib();
$pdflib->setPdfPath($pdf_file_path);
$pdflib->setOutputPath($folder_path_for_images);
$pdflib->convert();
インストール完了!うまくいきました!
Windowsでbase install imagemagick を実行できます。
php (local)
でexec(<command line>)
の呼び出しを使用しますex:
<?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
を使用することもできます
すべてが助けてくれました!
別の考え方で、次のライブラリを使用して、javascriptを使用してpdfを画像に変換できます。
これは、いくつかのプロジェクトで作成して使用した簡単なクラスです。 imagick
をラップするだけで、各ページのディスクへの書き込みを処理します。誰かがまだこれを行う簡単な方法を探しているなら、 this link が役に立つかもしれません。