首页 文章

仅使用Imagick为第一页创建ONLINE PDF缩略图

提问于
浏览
2

我试图制作托管在另一台服务器上的pdf文件的缩略图 . 我目前的代码是:

<?php
$im = new imagick("http://www.d3publisher.us/Walkthroughs/Naruto_NC_3_DS.pdf");
$im->setImageFormat('jpg');
header('Content-Type: image/jpeg');
echo $im;
?>

问题是代码只生成pdf文件的最后一页的缩略图 . 如何仅为第一页制作缩略图?我试图在想象线上添加[0] .

$im = new imagick("http://www.d3publisher.us/Walkthroughs/Naruto_NC_3_DS.pdf[0]");

但它不起作用 . 它只适用于本地pdf文件,即:

$im = new imagick("my-pdf-file.pdf[0]");

请帮我解决这个问题..谢谢..

3 回答

  • 0

    您需要将活动图像重置为第一页 . 这可以通过Imagick::setIteratorIndex完成 .

    <?php
    $im = new imagick("http://www.d3publisher.us/Walkthroughs/Naruto_NC_3_DS.pdf");
    $im->setIteratorIndex(0);
    $im->setImageFormat('jpg');
    header('Content-Type: image/jpeg');
    echo $im;
    ?>
    
  • 4

    “这可以用Imagick :: setIteratorIndex完成 . ”

    ..或不 . 根本没有效果 . 将其设置为一个崩溃的东西,将其设置为0获取最后一页..

    function make_thumbnail($filename)
        {
    
        try
            {
            $imagick= new Imagick($filename);
            }
        catch(ImagickException $e)
            {
            // failed to make a thimbynail. what now?
            // load up our trusty truetype font png instead?
            $imagick->destroy();
            return "0"; // shove any rubbish in the db - it will just say no image available when asked.
            }
        $imagick->setIteratorIndex(0);// rewind to first page or image of a multi series
        $imagick->setImageFormat("png"); // turn it into a png
        $imagick = $imagick->flattenImages(); // remove any transparency
    
        $imagick->scaleImage(300,0);  //resize...to less than 300px wide
        $d = $imagick->getImageGeometry();
            $h = $d['height'];
            if($h > 300) 
            $imagick->scaleImage(0,300); 
        $imagick->setImageCompression(\Imagick::COMPRESSION_UNDEFINED);
        $imagick->setImageCompressionQuality(0);
        $imagick->setIteratorIndex(0);
        $a = $imagick->getImageBlob(); // output as bytestream
        $imagick->destroy();
        return $a;
        }
    
  • 0

    尝试...

    $im->setImageIndex(0); //this will return 1th page of the pdf file
    $im->setImageFormat('jpg');
    

相关问题