php 将pdf 转化为图片

272 阅读1分钟

1.在PHP中安装扩展imagemagick

2.服务器运行yum install ghostscript

3.如果出现open_basedir restriction in effect报错去宝塔项目网站目录,关闭open_basedir

4.到这里估计就不会出现其它报错了,如果报其它错误自行百度,我这里到第二部就成功了

代码:

一.将pdf文件转化为多张png图片

function pdf2png($pdf)
{
    $path = ROOT_PATH . 'public/uploads/wrodpng/';//存到本地的路径

    $im = new \Imagick();
    $im->setResolution(120, 120); //设置分辨率 值越大分辨率越高
    $im->setCompressionQuality(100);
    $im->readImage($pdf);
    $count = count($im); //获取word文档数量
    foreach ($im as $k => $v) {
        $v->setImageFormat('png');
        $fileName = $path . md5($k . time()) . '.png';
        if ($v->writeImage($fileName) == true) {
            $return[] = $fileName;
        }
    }
    $this->success('成功',$count);
}

二.将pdf转化为单一png图片


function pdf2png2($pdf)
{
    
    $path = ROOT_PATH . 'public/uploads/wrodpng/';


    try {
        $im = new \Imagick();
        $im->setCompressionQuality(100);
        $im->setResolution(120, 120);//设置分辨率 值越大分辨率越高

        $im->readImage($pdf);

        $canvas = new \Imagick();
        $imgNum = $im->getNumberImages();
        //$canvas->setResolution(120, 120);
        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 += 10;
            } //最后添加10的height
            $canvas->newImage($width, $height, new \ImagickPixel('white'));
            $canvas->compositeImage($sub, \Imagick::COMPOSITE_DEFAULT, 5, 5);
        }

        $canvas->resetIterator();
        $a  = $canvas->appendImages(true)->writeImage($path . microtime(true) . '.png');

    } catch (Exception $e) {
        throw $e;
    }
}

小伙伴们!这样就完成了哦! QQ学习交流群:842167453 ,欢迎小伙伴加入一起学习。