如何使用 ImageMagick for PHP 将多页 PDF 转换为图像?

How to convert a multi-page PDF to images using ImageMagick for PHP?

我想将pdf文件转换成图片。我在 cakePHP 中使用 ImageMagick 进行图像转换。

当我拍摄单页 PDF 时,它被转换为图像,但问题是当我拍摄多页 PDF 时,只有文档的最后一页被转换为图像,而不是所有页面页。

我该如何解决这个问题?

这是我的代码。

 public function convertToImage() {  
     $this->layout = "ajax";

        $uploadfile=APP.WEBROOT_DIR.DS.'files'.DS.$this->request->data['f'];
        $uploaddir=APP.WEBROOT_DIR.DS.'files'.DS.'images'.DS;
        $im = new imagick();
        $im->setResolution(80,80);
        $im->readimage($uploadfile);//."[0]");
        $im->setImageFormat('jpeg');
        $image_name = $this->request->data['f'].".jpg";
        $imageprops = $im->getImageGeometry();
        if ($imageprops['width'] <= 1275 && $imageprops['height'] <= 1650) {
            // don't upscale
         } else {
             $im->resizeImage(1275,1650, imagick::FILTER_LANCZOS, 0.9, true);
         }


        $im->writeImage($uploaddir .$image_name);
        $im->clear();
        $im->destroy();exit;
 }  

您可以通过

访问每个页面
$im->readimage($uploadfile."[".$pageNumber."]");

使用 imagemagick,您还可以读取 pdf 中有多少页:

$document = new Imagick('document.pdf'); 
$document->getNumberImages();

使用此数字,您可以遍历每个页面并保存图像。

如此处所述:http://php.net/manual/en/class.imagick.php#111197当与 pdfs 一起使用时,imagemagick 的指针设置为最后一页。