【PDF2PNG】PHP将PDF转换成PNG ?

PHP环境下,将PDF文件转换成PNG图片?

最佳的环境是Linux下

需要的环境

  1. PHP环境
  2. Imagemagick 扩展
  3. ghostscript

Imagemagick扩展安装

如果是宝塔的安装的环境,则只需要在宝塔中执行即可,如下图:
在这里插入图片描述
如果,不是宝塔安装的,则问度娘安装教程

php代码如下:

/**
 * 将pdf转化为单一png图片
 * @param string $pdf  pdf所在路径 (/www/pdf/abc.pdf pdf所在的绝对路径)
 * @param string $path 新生成图片所在路径 (/www/pngs/)
 * @param string $filename
 * @throws Exception
 */
function pdf2png2($pdf, $path,$filename)
{
    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();
        $canvas->appendImages(true)->writeImage($path . $filename . '.png');
    } catch (Exception $e) {
        throw $e;
    }
}

/**
 * 将pdf转化为一张张png图片
 * @param string $pdf  pdf所在路径 (/www/pdf/abc.pdf pdf所在的绝对路径)
 * @param string $path 新生成图片所在路径 (/www/png/)
 * @throws Exception
 */
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;
}

如果执行,报错:Failed to read the file

则需要安装ghostscript,进入SSH终端,执行下面的安装命令,即可。

wget https://github.com/ArtifexSoftware/ghostpdl-downloads/releases/download/gs925/ghostscript-9.25.tar.gz
tar zxvf ghostscript-9.25.tar.gz
cd ghostscript-9.25
./configure --prefix=/usr
make all
make install
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值