PHP中使用imagick实现把PDF转成图片


Posted in PHP onJanuary 26, 2015

PHP Manual里,对imagick的描述,真的是简洁,每个成员函数,点击打开就看到如下文本:

Warning

This function is currently not documented; only its argument list is available.

刚才解决了PHP加载问题后,对图片的处理相当方便,网上随便找了一段:
<?php

Header("Content-type: image/jpeg");    

/**

* 缩小图片尺寸.

*

* @param $image 待处理的二进制图片

* @param $width 处理后图片尺寸的宽度(px)

* @param $height 处理后图片尺寸的高度(px)

* @param $crop 是否裁剪图片

*

* @return 处理好的二进制图片

*/

function resize($image, $width, $height, $crop)

{

   $imagick = new Imagick($image);

   $w = $imagick->getImageWidth();

   $h = $imagick->getImageHeight();

   if ($w > $width || $h > $height)

   {

      if ($crop)

      {

         $imagick->cropThumbnailImage($width, $height);

      }

      else

      {

         $imagick->resizeImage($width, $height, Imagick::FILTER_LANCZOS, 1, true);

      }

   }

   $processed_image = $imagick->getImageBlob();

   return $processed_image;

}

$s=resize("123.jpg", 60, 40, 1);

echo $s;

?>

但我要用这个扩展做的,是将PDF转成PNG。PDF哦!
<?php

/**

* PDF2PNG

* @param $pdf  待处理的PDF文件

* @param $path 待保存的图片路径

* @param $page 待导出的页面 -1为全部 0为第一页 1为第二页

* @return      保存好的图片路径和文件名

*/

 function pdf2png($pdf,$path,$page=-1)

{  

   if(!extension_loaded('imagick'))

   {  

       return false;  

   }  

   if(!file_exists($pdf))

   {  

       return false;  

   }  

   $im = new Imagick();  

   $im->setResolution(120,120);  

   $im->setCompressionQuality(100);

   if($page==-1)   

      $im->readImage($pdf);

   else

      $im->readImage($pdf."[".$page."]");

   foreach ($im as $Key => $Var)

   {  

       $Var->setImageFormat('png');  

       $filename = $path."/". md5($Key.time()).'.png';

       if($Var->writeImage($filename) == true)

       {  

           $Return[] = $filename;  

       }  

   }  

   return $Return;  

}  

$path="images";//请确保当前目录下有这个文件夹,由于一直要用,所以就不加检测了

$s=pdf2png("test.pdf",$path);

$scount=count($s);

for($i=0;$i<$scount;$i++)

{

   echo "<div align=center><font color=red>Page ".($i+1)."</font><br><a href=\"".$s[$i]."\" target=_blank><img border=3 height=120 width=90 src=\"".$s[$i]."\"></a></div><p>";

}

?>

跟上面的差不多吧?可是总是不成功,readImage那边异常了,查看错误输出:
PHP Fatal error:  Uncaught exception 'ImagickException' with message 'PostscriptDelegateFailed `test.pdf': No such file or directory'

百度谷歌了好久,最后灵机一动,不是说Postscript么?我找,我装。
这个Postscript,其实是GhostScript。
装好后,一跑,OK啦!

PHP中使用imagick实现把PDF转成图片

PHP 相关文章推荐
如何去掉文章里的 html 语法
Oct 09 PHP
JS中encodeURIComponent函数用php解码的代码
Mar 01 PHP
PHP实现的简单日历类
Nov 29 PHP
PHP中iconv函数知识汇总
Jul 02 PHP
PHP中的数组处理函数实例总结
Jan 09 PHP
PHP解压tar.gz格式文件的方法
Feb 14 PHP
php实现将HTML页面转换成word并且保存的方法
Oct 14 PHP
PHP实现通过strace定位故障原因的方法
Apr 29 PHP
PHP设计模式之单例模式定义与用法分析
Mar 26 PHP
thinkPHP5使用Rabc实现权限管理
Aug 28 PHP
laravel框架创建授权策略实例分析
Nov 22 PHP
PHP如何使用array_unshift()在数组开头插入元素
Sep 01 PHP
PHP中使用Imagick操作PSD文件实例
Jan 26 #PHP
PHP实现将浏览历史页面网址保存到cookie的方法
Jan 26 #PHP
php ImageMagick windows下安装教程
Jan 26 #PHP
php的GD库imagettftext函数解决中文乱码问题
Jan 24 #PHP
php绘图之生成饼状图的方法
Jan 24 #PHP
php绘图之在图片上写中文和英文的方法
Jan 24 #PHP
php绘图之加载外部图片的方法
Jan 24 #PHP
You might like
Apache2 httpd.conf 中文版
2006/11/17 PHP
基于GD2图形库的PHP生成图片缩略图类代码分享
2015/02/08 PHP
PHP远程连接oracle数据库操作实现方法图文详解
2019/04/11 PHP
一个用js实现的页内搜索代码
2007/05/23 Javascript
JS继承--原型链继承和类式继承
2013/04/08 Javascript
禁用键盘上的(全局)指定键兼容iE、Chrome、火狐
2013/05/14 Javascript
js unicode 编码解析关于数据转换为中文的两种方法
2014/04/21 Javascript
javascript将异步校验表单改写为同步表单
2015/01/27 Javascript
JavaScript实现表格点击排序的方法
2015/05/11 Javascript
浅谈jQuery中的checkbox问题
2016/08/10 Javascript
php输出全部gb2312编码内的汉字方法
2017/03/04 Javascript
javascript 中Cookie读、写与删除操作
2017/03/29 Javascript
详解Angular 中 ngOnInit 和 constructor 使用场景
2017/06/22 Javascript
Bootstrap4如何定制自己的颜色和风格
2018/02/26 Javascript
基于vue中解决v-for使用报红并出现警告的问题
2018/03/03 Javascript
jQuery length 和 size()区别总结
2018/04/26 jQuery
jQuery实现导航样式布局操作示例【可自定义样式布局】
2018/07/24 jQuery
vue2.0 + ele的循环表单及验证字段方法
2018/09/18 Javascript
浅谈vuex actions和mutation的异曲同工
2018/12/13 Javascript
基于Webpack4和React hooks搭建项目的方法
2019/02/05 Javascript
基于JavaScript实现简单的轮播图
2021/03/03 Javascript
python类定义的讲解
2013/11/01 Python
Python聚类算法之基本K均值实例详解
2015/11/20 Python
django使用html模板减少代码代码解析
2017/12/12 Python
python多线程案例之多任务copy文件完整实例
2019/10/29 Python
python安装读取grib库总结(推荐)
2020/06/24 Python
Pytorch损失函数nn.NLLLoss2d()用法说明
2020/07/07 Python
AmazeUI中模态框的实现
2020/08/19 HTML / CSS
荷兰演唱会和体育比赛订票网站:viagogo荷兰
2018/04/08 全球购物
将一个数的从第5位开始的7个数取出,其余位置0
2016/05/26 面试题
教师评优的个人自我评价分享
2013/09/19 职场文书
幼儿园教师请假制度
2014/01/16 职场文书
行政管理专业求职信
2014/07/06 职场文书
初中家长评语和期望
2014/12/26 职场文书
民间借贷纠纷案件代理词
2015/05/26 职场文书
无婚姻登记记录证明
2015/06/18 职场文书