1

ダウンロードしたpdfファイルをPHP経由で画像に変換したい。この目的のために、私は PHP の Imagemagick 拡張機能を使用しています。問題は、file_get_contents 関数を使用して pdf ファイルをダウンロードすると、このダウンロードしたコンテンツで Imagemagic オブジェクトを作成できないことです。コードは次のとおりです。

<?php

$url = "pdf webaddress";
$pdfData = file_get_contents($url);

try
    {

        $img = new Imagick($pdfData);
        $img->setResolution(480,640);
        $img->setImageFormat("jpeg");
        $img->writeImage("test.jpeg");  

    }
catch(Exception $e)
{
    echo $e->getMessage();
}
?>

次のエラーが表示されます。

ファイルを読み取れません: %PDF-1.6 %גד׿׃ 7 0 obj <> endobj 86 0 obj <>/Filter/FlateDecode/ID[]/Index[7 146]/Info 6 0 R/Length 257/Prev 592751/ Root 8 0 R/Size 153/Type/XRef/W[1 3 1]>>stream h�bbd `bׁ'6 '9DעƒH

ここで、ローカルに保存された pdf ファイルを読み込むと、すべて正常に動作します。コードは次のとおりです。

 $image = "output.png";
 $img = new Imagick("path to pdf file");
 $img->setResolution(480,640);
 $img->setImageFormat("jpeg");
 $img->writeImage("test.jpeg"); 

どんな提案でも、助けていただければ幸いです。

4

1 に答える 1

3

ImageMagick PHP 拡張ドキュメント ページから、Imagickコンストラクターには、ローカル ファイルまたはURLのいずれかのファイル名パラメーターが必要です。:

パスには、ファイル名のワイルドカードを含めることも、URL にすることもできます。

URL を直接渡す必要がありますfile_get_contents。PHP ファイル ストリームは非常に強力です。

別の解決策は、ファイルをローカルに保存することです (tempnam()およびを参照file_put_contents)。

$pdfUrl = "...";
$tmpFileName = tempnam(sys_get_temp_dir(), "pdf");
file_put_contents($tmpFileName, file_get_contents($pdfUrl));
// Do your ImageMagick job
unlink($tmpFileName);
于 2012-06-22T15:43:37.763 に答える