2

Imagick PHP を使用した PDF ファイルのサムネイル作成スクリプトがあります。

PDFファイルの最初のページのサムネイルを作成します。

固定の高さと幅で問題なくサムネイルを作成できます

PDF ファイルの最初のページの高さと幅を取得し、それに応じてサムネイルの高さと幅を計算する必要があります。

画像からサムネイルを作成する必要がある場合、PHP で getimagesize 関数を使用できますが、PDF ファイルの最初のページの高さと幅を取得するような関数はありますか?

4

1 に答える 1

6

ファイル名に追加することで、ImageMagick が読み取ることができるマルチページ ファイル形式の最初のページにアクセスでき[0]ます。

これは、identifyこのコマンドを使用して PDF の最初のページの幅と高さを出力するように要求できることを意味します。PHP 構文に変換するのに問題はありません。

 identify  -format "width: %W  --  height: %H\n"  some.pdf[0]

これにより、最初のページのMediaBoxの値が次の形式で出力されます。

  width: 345  --  height: 777

これらの値の単位は PostScript ポイントです (ここで72 pt == 1 inch)。もちろん、2 つの数値のみを指定したり、次のWxH形式を使用したりするなど、必要に応じてコマンドを自由に変更できます。

 identify  -format "%W %H\n"  some.pdf[0]
 identify  -format "%Wx%H\n"  some.pdf[0]

ただし、次の事実に注意してください。

  1. PDF は、オプションのTrimBoxCropBoxArtBox、およびBleedBox設定もサポートしています。
  2. これらの中で最も重要なのはTrimBoxです。
  3. TrimBoxがMediaBoxと異なる場合(同じかそれより小さい必要があり、大きくすることはできません)、PDF ビューアーとプリンター ドライバーは、そのボックス内にあるページの一部のみをレンダリングするように求められます。
  4. identifyは MediaBox 値のみを返します。他のボックスはサポートされていません。
  5. 同様にconvert、PDF ページの (場合によってはより大きな) MediaBox サイズを使用して画像をレンダリングします (したがって、その結果は、PDF ビューアーで表示されるものとは異なるように見えます)。
  6. 幸いなことに、MediaBoxの値と大きく異なるTrimBoxの値を持つ PDFはあまり一般的ではありません。
  7. すべてのボックスの値の設定にアクセスする必要がある場合は、別のコマンド ユーティリティを使用して関連情報を抽出する必要がありますpdfinfo -box -f 1 -l 1 some.pdf | grep -E '(Box:|rot:|size:)'。(可能であればのPopplerバージョンを使用してください...)pdfinfo
于 2012-08-26T07:31:32.577 に答える