当前位置:

php实现pdf转图片(参考)

温馨提示:本文共1604个字,读完预计5分钟。

文章目录

最近遇到一个需求,需要将pdf在web或者app中进行展示。有很多js控件或者app空间可以直接展示pdf,或者说很多第三方外链可以做到直接展示pdf文件的内容。
第三方不说了,他们做的优化足够好,但是集成到web或pc中样式是否可以接受?
用第三方空间,无疑增加了前段的处理压力和展示时间(如果pdf过大,js处理可能会需要很久才能展示图片,而且还有遇见过方向错误等问题)

so: 没错,可以吧pdf转化成图片,返回给客户端展示啊。

按照这个思路我就写了php版本的pdf转图片的。

开始

以centos系统环境为例子吧。

php要实现将pdf转化成图片,主要依赖于一个软件:ImageMagick,没错他是一个强大的图片处理软件。在centos上,该软件想要读取pdf,依赖于另外一个软件Ghostscript(gs),该软件能够帮助ImageMagick读取pdf文件内容。

安装gs
1
2
3
4
5
6
安装gs(不安装gs,会导致读取pdf失败)
下载最新版本
tar -zxvf 
./configure --prefix=/usr/local/ghostscript
make all
make install

gs的指令必须在usr/bin/gs,请务必确认/usr/bin/gs是否存在,不存在ln 进来。

安装ImageMagick
1
2
3
4
5
下载地址:ftp://ftp.u-aizu.ac.jp/pub/graphics/image/ImageMagick/imagemagick.org/ImageMagick-7.0.9-1.tar.gz
tar -zxvf ./ImageMagick-7.0.8-68.tar.gz
./configure -prefix=/usr/local/imagemagick
make 
make install
安装ImageMagick扩展
1
2
3
4
5
6
7
8
wget https://pecl.php.net/get/imagick-3.4.4.tgz
tar -zxvf ./imagick-3.4.4.tgz
/usr/local/php/bin/phpize
./configure --with-php-config=/usr/local/php/bin/php-config --with-imagick=/usr/local/imagemagick/
make
make install

php.ini文件中写入扩展:imagemagick.so

使用demo

1
2
3
4
5
6
7
8
9
10
11
12
13
14
$im = new \Imagick();
$im->setCompressionQuality(50);
$im->setResolution(100, 100);
$im->readImage($img . "[4]"); // 一定要在设置Resolution后读取文件,保证清晰度(如果先读取文件再设置清晰度,亲测清晰度和质量很低)
$im->scaleImage(1190, 1682);
$im->setImageBackgroundColor('white');
$im->setImageUnits(1);
$im = $im->mergeImageLayers(\Imagick::LAYERMETHOD_FLATTEN); //不设置,无法出现白底,png默认透明,jpg黑底
$filename =  md5($img).'_5' . '.jpg';
$filePath = __ROOT__ .'/public/uploads/signImg/'.$filename;
$im->setImageFormat('jpeg');
$res = $im->writeImage($filePath);
$im->clear();
$im->destroy(); // 使用后请务必及时销毁,读写文件的内存资源很重要

本文链接:,转发请注明来源!
评论已关闭。