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 相关文章推荐
ASP和PHP都是可以删除自身的
Apr 09 PHP
PHP动态分页函数,PHP开发分页必备啦
Nov 07 PHP
PHP中函数rand和mt_rand的区别比较
Dec 26 PHP
解析php中heredoc的使用方法
Jun 17 PHP
使用PHP Socket写的POP3类
Oct 30 PHP
php实现根据字符串生成对应数组的方法
Sep 22 PHP
php强制下载文件函数
Aug 24 PHP
php版微信公众平台接口开发之智能回复开发教程
Sep 22 PHP
mac系统下安装多个php并自由切换的方法详解
Apr 21 PHP
ThinkPHP下表单令牌错误与解决方法分析
May 20 PHP
微信公众号实现会员卡领取功能
Jun 08 PHP
PHP chunk_split()函数讲解
Feb 12 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
PHP5.3的垃圾回收机制(动态存储分配方案)深入理解
2012/12/10 PHP
析构函数与php的垃圾回收机制详解
2013/10/28 PHP
微信支付开发教程(一)微信支付URL配置
2014/05/28 PHP
destoon各类调用汇总
2014/06/20 PHP
跨浏览器PHP下载文件名中的中文乱码问题解决方法
2015/03/05 PHP
Zend Framework教程之Bootstrap类用法概述
2016/03/14 PHP
php使用ftp远程上传文件类(完美解决主从文件同步问题的方法)
2016/09/23 PHP
将数字转换成大写的人民币表达式的js函数
2014/09/21 Javascript
js实现随屏幕滚动的带缓冲效果的右下角广告代码
2015/09/04 Javascript
Webpack 实现 Node.js 代码热替换
2015/10/22 Javascript
js实现将选中内容分享到新浪或腾讯微博
2015/12/16 Javascript
javascript类型系统——undefined和null全面了解
2016/07/13 Javascript
js鼠标按键事件和键盘按键事件用法实例汇总
2016/10/03 Javascript
Vue 过渡实现轮播图效果
2017/03/27 Javascript
JavaScript实现网页头部进度条刷新
2017/04/16 Javascript
JS实现的哈夫曼编码示例【原始版与修改版】
2018/04/22 Javascript
Vue Promise的axios请求封装详解
2018/08/13 Javascript
详解html-webpack-plugin插件(用法总结)
2018/09/12 Javascript
NodeJS加密解密及node-rsa加密解密用法详解
2018/10/12 NodeJs
详解element-ui日期时间选择器的日期格式化问题
2019/04/08 Javascript
Js参数RSA加密传输之jsencrypt.js的使用
2020/02/07 Javascript
在Python的Django框架中更新数据库数据的方法
2015/07/17 Python
python脚本替换指定行实现步骤
2017/07/11 Python
使用Python写一个量化股票提醒系统
2018/08/22 Python
python使用pandas处理大数据节省内存技巧(推荐)
2019/05/05 Python
python 实现创建文件夹和创建日志文件的方法
2019/07/07 Python
python实现人机猜拳小游戏
2020/02/03 Python
django创建超级用户时指定添加其它字段方式
2020/05/14 Python
解决pyinstaller打包运行程序时出现缺少plotly库问题
2020/06/02 Python
用HTML5制作一个简单的弹力球游戏
2015/05/12 HTML / CSS
安全生产先进个人材料
2014/02/06 职场文书
小学教师自我剖析材料
2014/09/29 职场文书
四风查摆问题及整改措施
2014/10/10 职场文书
先进班组材料范文
2014/12/25 职场文书
清明节随笔
2015/08/15 职场文书
python 爬取吉首大学网站成绩单
2021/06/02 Python