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 相关文章推荐
PHP5 安装方法
Jan 15 PHP
删除及到期域名的查看(抢域名必备哦)
May 14 PHP
php数组函数序列之each() - 获取数组当前内部指针所指向元素的键名和键值,并将指针移到下一位
Oct 31 PHP
destoon实现调用热门关键字的方法
Jul 15 PHP
利用PHP函数计算中英文字符串长度的方法
Nov 11 PHP
Zend Guard使用指南及问题处理
Jan 07 PHP
在WordPress中使用PHP脚本来判断访客来自什么国家
Dec 10 PHP
php数组实现根据某个键值将相同键值合并生成新二维数组的方法
Apr 26 PHP
使用WAMP搭建PHP本地开发环境
May 10 PHP
总结一些PHP中好用但又容易忽略的小知识
Jun 02 PHP
thinkPHP框架通过Redis实现增删改查操作的方法详解
May 13 PHP
在TP5数据库中四个字段实现无限分类的示例
Oct 18 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
php中CI操作多个数据库的代码
2012/07/05 PHP
php+mysql实现数据库随机重排实例
2014/10/17 PHP
初识ThinkPHP控制器
2016/04/07 PHP
简单概括PHP的字符串中单引号与双引号的区别
2016/05/07 PHP
php图片合成方法(多张图片合成一张)
2017/11/25 PHP
PHP cookie,session的使用与用户自动登录功能实现方法分析
2019/06/05 PHP
一个可以显示阴历的JS代码
2007/03/05 Javascript
jquery ajax 同步异步的执行示例代码
2010/06/23 Javascript
js事件冒泡实例分享(已测试)
2013/04/23 Javascript
Javascript 多物体运动的实现
2014/12/24 Javascript
微信小程序 教程之数据绑定
2016/10/18 Javascript
Javascript中return的使用与闭包详解
2017/01/11 Javascript
JavaScript常用正则函数用法示例
2017/01/23 Javascript
js for循环倒序输出数组元素的实例
2017/03/01 Javascript
深入理解Vue生命周期、手动挂载及挂载子组件
2017/09/27 Javascript
jquery获取transform里的值实现方法
2017/12/12 jQuery
使用watch监听路由变化和watch监听对象的实例
2018/02/24 Javascript
父组件中vuex方法更新state子组件不能及时更新并渲染的完美解决方法
2018/04/25 Javascript
基于bootstrap页面渲染的问题解决方法
2018/08/09 Javascript
微信小程序时间选择插件使用详解
2018/12/28 Javascript
layui实现鼠标移动到单元格上显示数据的方法
2019/09/11 Javascript
解决vue更新路由router-view复用组件内容不刷新的问题
2019/11/04 Javascript
python 域名分析工具实现代码
2009/07/15 Python
Python使用cookielib模块操作cookie的实例教程
2016/07/12 Python
Python 3中的yield from语法详解
2017/01/18 Python
python 拷贝特定后缀名文件,并保留原始目录结构的实例
2018/04/27 Python
使用11行Python代码盗取了室友的U盘内容
2018/10/23 Python
详解python执行shell脚本创建用户及相关操作
2019/04/11 Python
Python爬虫学习之获取指定网页源码
2019/07/30 Python
Django继承自带user表并重写的例子
2019/11/18 Python
python爬虫容易学吗
2020/06/02 Python
浅谈如何使用python抓取网页中的动态数据实现
2020/08/17 Python
顶岗实习接收函
2014/01/09 职场文书
大学活动邀请函
2014/01/28 职场文书
酒店财务经理岗位职责
2015/04/08 职场文书
盘点2020年适合农村地区创业的项目
2019/10/16 职场文书