PHP pdf转png windows版本
阅读原文时间:2023年07月09日阅读:1

链接:https://pan.baidu.com/s/1Bli-2HkucRTYTeujkcsmjg&shfl=sharepset
提取码:2une

  (1)下载php_imagick扩展

  下载地址一: http://windows.php.net/downloads/pecl/releases/imagick/
  下载地址二: https://pecl.php.net/package/imagick
  要点: 注意对应php版本 ts还是nts x86还是x64
  这里以phpinfo()为准

(2)安装 

  解压上述文件后,将php_imagick.dll复制到php/ext目录,或者其他你的存放拓展的目录
  修改php.ini 加上extension=php_imagick.dll,注意php可能有多个ini,以phpinfo为准
  此时复制解压上述文件目录中其他dll到php目录,重启apache,此时phpinfo显示拓展安装成功,但是 ImageMagick number of supported formats为0,到这里成功安装了一半

 (1)imagemagick程序

  下载地址:http://windows.php.net/downloads/pecl/deps/
  imagemagick还有官网下载,此处不鼓励从imagemagick官方下载,他们的网站上我并没有找到历史版本下载,安装失败的几率很大
  下载与phpinfo提示一致的版本,此时需要注意  : 1.软件版本对应     2.vc11还是vc14 3.x86还是x64 都要以phpinfo为准

 (2)安装imagemagick 

  下载的文件解压后,将程序整体复制到无空格 无中文字符的目录中 E:\Program Files (x86)\
  配置环境变量,在“此电脑”右键“属性”,以此点击“高级” “环境变量” ,在 “系统变量”中找到键为path的数据,双击path,选择“新建”,将刚刚放程序的目录“E:\Program Files (x86)\ImageMagick\bin”填入即可
  将“E:\Program Files (x86)\ImageMagick\bin”目录中的所有的以“.DLL‘为后缀的文件放入php的根目录,应该有145个

  重启计算机

  然后你就可以在phpinfo里看到

  注意:如果运行php代码出现

  https://www.ghostscript.com/download/gsdnld.html

  下载适合电脑的版本,安装后将安装目录的bin目录配置到环境变量里,运行cmd,  运行gswin64出现以下画面就是安装成功(我安装的是windows64位的,所以命令是gswin64)

  注意:如果ghostscript的版本不适合的时候运行php会导致php-cgi崩溃,如果出现这种情况就是ghostscript版本不适合

/\*\*  
 \* 将pdf文件转化为多张png图片  
 \* @param string $pdf  pdf所在路径 (/www/pdf/abc.pdf pdf所在的绝对路径)  
 \* @param string $path 新生成图片所在路径 (/www/pngs/)  
 \*  
 \* @return array|bool  
 \*/  
function pdf2png($pdf, $path)  
{  
    if (!extension\_loaded('imagick')) {  
        return false;  
    }  
    if (!file\_exists($pdf)) {  
        return false;  
    }  
    $im = new \\Imagick();  
    $im->setResolution(120, 120); //设置分辨率 值越大分辨率越高  
    $im->setCompressionQuality(100);  
    $im->readImage($pdf);  
    foreach ($im as $k => $v) {  
        $v->setImageFormat('png');  
        $fileName = $path . md5($k . time()) . '.png';  
        if ($v->writeImage($fileName) == true) {  
            $return\[\] = $fileName;  
        }  
    }  
    return $return;  
}

/\*\*  
 \* 将pdf转化为单一png图片  
 \* @param string $pdf  pdf所在路径 (/www/pdf/abc.pdf pdf所在的绝对路径)  
 \* @param string $path 新生成图片所在路径 (/www/pngs/)  
 \*  
 \* @throws Exception  
 \*/  
function pdf2png2($pdf, $path)  
{  
    try {  
        $im = new \\Imagick();  
        $im->setCompressionQuality(100);  
        $im->setResolution(120, 120);//设置分辨率 值越大分辨率越高  
        $im->readImage($pdf);

        $canvas = new \\Imagick();  
        $imgNum = $im->getNumberImages();  
        //$canvas->setResolution(120, 120);  
        $old\_height = 0;  
        foreach ($im as $k => $sub) {  
            $sub->setImageFormat('png');  
            //$sub->setResolution(120, 120);  
            $sub->stripImage();  
            $sub->trimImage(0);  
            $width  = $sub->getImageWidth() + 10;  
            $height = $sub->getImageHeight() + 10;  
            if ($k + 1 == $imgNum) {  
                //最后一页空白高度处理  
                $height = $old\_height;  
            }else{  
                $old\_height = $height;  
            }  
            $canvas->newImage($width, $height, new \\ImagickPixel('white'));  
            $canvas->compositeImage($sub, \\Imagick::COMPOSITE\_DEFAULT, 5, 5);  
        }

        $canvas->resetIterator();  
        $canvas->appendImages(true)->writeImage($path . microtime(true) . '.png');  
    } catch (Exception $e) {  
        throw $e;  
    }  
}

注意:文件太大时要注意php的运行最长时间time of 30 seconds exceeded的报错。

  解决方法: 在php.ini中增加运行时间:max_execution_time=300   或者  在PHP文件中添加如下代码ini_set``(``'max_execution_time'``, 300); //300 seconds = 5 minutes

手机扫一扫

移动阅读更方便

阿里云服务器
腾讯云服务器
七牛云服务器