HOWTO · PHP
PHP で PDF ドキュメントをプレビュー画像に変換する
このチュートリアルでは、PHP で PDF ドキュメントを一連のプレビュー画像に変換するために使用できる 2つの方法について説明します。
このページの内容
このチュートリアルでは、PHP で PDF ドキュメントを一連のプレビュー画像に変換するために使用できる 2つの方法について説明します。
プレビューは、画像のコンテンツをコピーして貼り付けることができないため、コンテンツにセキュリティ層を追加します。 それらは、ここでは説明しませんが、その他の機能も提供します。
PDF ドキュメントをプレビュー画像に変換する最も簡単な方法は、サードパーティのライブラリを利用することです。 これらは:
- ゴーストスクリプト
- イメージマジック
PHP と Ghostscript を使用して PDF ドキュメントをプレビュー画像に変換する
このコマンドライン ユーティリティは、Windows、Linux、および Mac で使用できます。 以下の手順に従って、PDF ドキュメントをプレビュー イメージに変換します。
-
インストールを開始するには、Ghostscript の公式 Web サイトにアクセスし、実行可能ファイルをダウンロードして、セットアップ手順に従います。
-
以下のコードを実行して、インストールを確認します。
$gs --version -
PDF ファイルのディレクトリで、以下のコマンドを実行します。
$gs -dSAFER -dBATCH -sDEVICE=jpeg \ -dTextAlphaBits=4 -dGraphicsAlphaBits=4 \ -dFirstPage=1 -dLastPage=1 -r300 \ -sOutputFile=preview.jpg input.pdf -
上記のコマンドは、ドキュメントの開始ページの画像を作成します。 以下に示すように、PHP でコマンドを使用するために
exec()関数を呼び出します。<?php exec( "ls -l", $output_str, $return_val ); foreach ( $output_str as $line ) { echo $line . "\n"; } ?>上記のコードは、すべてのディレクトリとファイルをコンソールにロードします。 これで、PHP コードを使用して Ghostscript コマンドを実行できるようになりました。
-
使用した PHP スクリプトは次のとおりです。
<?php function my_pdf ( $file ) { $file_info = file_get_contents( $file ); if ( preg_match( "/^%PDF-[0-1]\.[0-9]+/", $file_info ) ) { return true; } else { return false; } } function our_preview ( $file ) { $our_format = "png"; $prvw_page = "1"; $resolution = "300"; $our_file = "prvw.jpg"; $command = "gs -dSAFER -dBATCH -dNOPAUSE -sDEVICE=" . $our_format . " "; $command .= "-dTextAlphaBits=" . " -dGraphicsAlphaBits=" . . " "; $command .= "-dFirstPage=" . $prvw_page . " -dLastPage=" . $prvw_page . " "; $command .= "-r" . $resolution . " "; $command .= "-sOutputFile=" . $our_file . " '" . $file . "'"; echo "Running command...\n"; exec( $command, $com_output, $ret_val ); foreach( $com_output as $line ) { echo $line . "\n"; } if ( !$ret_val ) { echo "Preview created !!\n"; } else { echo "Error while creating.\n"; } } function __main__() { global $arg; $inp_file = $arg[1]; if ( my_pdf( $inp_file ) ) { // Preview for the pdf create_preview( $inp_file ); } else { echo "The file " . $inp_file . " is not a valid PDF document.\n"; } } __main__(); ?>コードの実行は
_main_()関数で始まり、コマンド ラインで PDF ファイルを取得してその有効性を検証します。 ファイルが有効な場合、PHP は Ghostscript コマンドを実行します。出力:
$ php pdf_preview.php input.pdf Executing command... GPL Ghostscript 9.22 (2022-08-05) Copyright (C) 2022 Artifex Software, Inc. All rights reserved. This software comes with NO WARRANTY: see the file PUBLIC for details. Processing pages 1 through 1. Page 1 Preview created !!
PHP と ImageMagick を使用して PDF ドキュメントをプレビュー画像に変換する
-
まず、すべての ImageMagick バイナリをシステムにインストールします。 以下のコマンドを実行して、ImageMagick の依存関係をインストールします。
$sudo dnf install gcc php-devel php-pear -
以下のコマンドを実行して、ImageMagick をインストールします。
$ sudo dnf install ImageMagick ImageMagick-devel -
次に、PHP ラッパー クラスをインストールしましょう。
$ sudo pecl install imagick $ sudo bash -c "echo "extension=imagick.so" > /etc/php.d/imagick.ini" -
LAMP サーバーで使用している場合は、Apache ウェブサーバーを再起動する必要があります。
$ sudo service httpd restart -
この時点で、必要なものはすべて揃っています。 以前の PHP スクリプトを使用して、
create_preview()関数を編集できるようになりました。以下のコードを使用します。
function create_preview ( $file ) { $output_format = "jpeg"; $preview_page = "1"; $resolution = "300"; $output_file = "imagick_preview.jpg"; echo "Fetching preview...\n"; $img_data = new Imagick(); $img_data->setResolution( $resolution, $resolution ); $img_data->readImage( $file . "[" . ($preview_page - 1) . "]" ); $img_data->setImageFormat( $output_format ); file_put_contents( $output_file, $img_data, FILE_USE_INCLUDE_PATH ); }出力:
$ php pdf_preview.php input.pdf Fetching preview...
これが、PHP で PDF ドキュメントからプレビュー画像を作成する方法です。 どちらの方法も同様の基本機能を備えています。 あなたの選択はあなたの好みに依存します。