簡體   English   中英

使用ImageMagick和PHP的PDF縮略圖

[英]Thumbnail image of PDF using ImageMagick and PHP

在搜索Google和SO之后,我發現了一些使用ImageMagick創建PDF文檔縮略圖的代碼。

對我來說麻煩的是將它實現到我的WordPress主題中。 我認為我已經陷入了緩存腳本需要臨時文件的路徑。

我按照文章中的描述使用它:

<img src="http://localhost/multi/wp-content/themes/WPalchemy-theme/thumbPdf.php?pdf=http://localhost/multi/wp-content/uploads/2012/03/sample.pdf&size=200 />

哪個必須是正確的(也許......但我認為我使用完整URL到實際文件是正確的),因為當我點擊該URL時,我將被帶到一個頁面,該頁面讀取以下錯誤:

Unable to read the file: tmp/http://localhost/multi/wp-content/uploads/2012/03/sample.pdf.png

現在tmp是在thumbPdf.php腳本中定義的,但我對它應該是什么值感到困惑。 它是網址還是路徑? 像timthumb.php一樣,我可以使它相對於thumbPdf.php腳本嗎? (我試過./cache這是timthumb中的設置 - 並確保在我的主題根目錄中有一個/ cache文件夾,但無濟於事)。 另外,我在我的root中放了一個/ tmp文件夾,但仍然得到同樣的錯誤。

那么如何配置tmp才能使其工作?

http://stormwarestudios.com/articles/leverage-php-imagemagick-create-pdf-thumbnails/

function thumbPdf($pdf, $width)
{
    try
    {
        $tmp = 'tmp';
        $format = "png";
        $source = $pdf.'[0]';
        $dest = "$tmp/$pdf.$format";

        if (!file_exists($dest))
        {
            $exec = "convert -scale $width $source $dest";
            exec($exec);
        }

        $im = new Imagick($dest);
        header("Content-Type:".$im->getFormat());
        echo $im;
    }
    catch(Exception $e)
    {
        echo $e->getMessage();
    }
}

$file = $_GET['pdf'];
$size = $_GET['size'];
if ($file && $size)
{
    thumbPdf($file, $size);
}

我看到了這個答案: 如何在PHP中將PDF文檔轉換為預覽圖像? 我准備下次去試試吧

錯誤告訴您需要的一切。

 Unable to read the file: tmp/http://localhost/multi/wp-content/uploads/2012/03/sample.pdf.png 

腳本當前嘗試從服務器tmp /文件夾中讀取文件。

 $tmp = 'tmp';
 $format = "png";
 $source = $pdf.'[0]';
 //$dest = "$tmp/$pdf.$format";
 $dest = "$pdf.$format";

記住securitywise這看起來並不是那么好,有人可以通過給你的腳本格式錯誤的外部源pdf來利用ImageMagic bug來實現非常討厭的事情。 您至少應該檢查圖像是否來自允許的來源,例如來自同一主機的請求。

使用ImageMagic的最佳方法是始終保存生成的圖像,並且只有在生成的圖像不存在時才生成新圖像。 某些ImageMagic操作在大文件上非常繁重,因此您不希望給服務器帶來負擔。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM