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 相关文章推荐
基于mysql的论坛(3)
Oct 09 PHP
php简单封装了一些常用JS操作
Feb 25 PHP
phpMyAdmin 安装教程全攻略
Mar 19 PHP
PHP使用DES进行加密与解密的方法详解
Jun 06 PHP
解析关于java,php以及html的所有文件编码与乱码的处理方法汇总
Jun 24 PHP
ecshop 2.72如何修改后台访问地址
Mar 03 PHP
PHP实现GIF图片验证码
Nov 04 PHP
YiiFramework入门知识点总结(图文教程)
Dec 28 PHP
PHP文件上传之多文件上传的实现思路
Jan 27 PHP
php实现图片上传、剪切功能
May 07 PHP
浅谈mysql_query()函数的返回值问题
Sep 05 PHP
解决tp5在nginx下修改配置访问的问题
Oct 16 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
如何限制访问者的ip(PHPBB的代码)
2006/10/09 PHP
解析PHP处理换行符的问题 \r\n
2013/06/13 PHP
php基于socket实现SMTP发送邮件的方法
2015/03/05 PHP
jQuery getJSON 处理json数据的代码
2010/07/26 Javascript
Javascript变量函数浅析
2011/09/02 Javascript
浅析js封装和作用域
2013/07/09 Javascript
使用jquery局部刷新(jquery.load)从数据库取出数据
2014/01/22 Javascript
javascript使用数组的push方法完成快速排序
2014/09/15 Javascript
JS小游戏之极速快跑源码详解
2014/09/25 Javascript
js密码强度检测
2016/01/07 Javascript
jquery判断类型是不是number类型的实例代码
2016/10/07 Javascript
Vue.js 2.0学习教程之从基础到组件详解
2017/04/24 Javascript
SpringMVC简单整合Angular2的示例
2017/07/31 Javascript
Element-ui之ElScrollBar组件滚动条的使用方法
2018/09/14 Javascript
使用Vuex解决Vue中的身份验证问题
2018/09/28 Javascript
vue和iview实现Scroll 数据无限滚动功能
2019/10/31 Javascript
如何修改Vue打包后文件的接口地址配置的方法
2020/04/22 Javascript
11个Javascript小技巧帮你提升代码质量(小结)
2020/12/28 Javascript
[04:11]DOTA2亚洲邀请赛小组赛第一日 TOP10精彩集锦
2015/01/30 DOTA
python socket网络编程步骤详解(socket套接字使用)
2013/12/06 Python
python计算圆周率pi的方法
2015/07/11 Python
Django model序列化为json的方法示例
2018/10/16 Python
django 实现将本地图片存入数据库,并能显示在web上的示例
2019/08/07 Python
Python数据可视化处理库PyEcharts柱状图,饼图,线性图,词云图常用实例详解
2020/02/10 Python
使用keras实现BiLSTM+CNN+CRF文字标记NER
2020/06/29 Python
Invicta手表官方商店:百年制表历史的瑞士腕表品牌
2019/09/26 全球购物
屈臣氏菲律宾官网:Watsons菲律宾
2020/06/30 全球购物
自荐信模版
2013/10/24 职场文书
市场部经理岗位职责
2014/04/10 职场文书
文案策划专业自荐信
2014/07/07 职场文书
关于运动会广播稿300字
2014/10/05 职场文书
玄武湖导游词
2015/02/05 职场文书
个人政治思想总结
2015/03/05 职场文书
小学教育见习总结
2015/06/23 职场文书
八年级数学教学反思
2016/02/17 职场文书
写作指导:怎么书写竞聘演讲稿?
2019/07/04 职场文书