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存储session的php代码
Jan 10 PHP
PHP flock 文件锁详细介绍
Dec 29 PHP
web server使用php生成web页面的三种方法总结
Oct 28 PHP
PHP将Excel导入数据库及数据库数据导出至Excel的方法
Jun 24 PHP
PHP和Mysql中转UTF8编码问题汇总
Oct 10 PHP
PHP编写文件多服务器同步程序
Jul 02 PHP
PHP字符串逆序排列实现方法小结【strrev函数,二分法,循环法,递归法】
Jan 13 PHP
在PHP 7下安装Swoole与Yar,Yaf的方法教程
Jun 02 PHP
PHP简单装饰器模式实现与用法示例
Jun 22 PHP
Laravel 5.4重新登录实现跳转到登录前页面的原理和方法
Jul 13 PHP
PHP实现基于回溯法求解迷宫问题的方法详解
Aug 17 PHP
php apache开启跨域模式过程详解
Jul 08 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
程序员编程十条戒律
2009/07/09 PHP
php使用pear_smtp发送邮件
2016/04/15 PHP
用JQuery 实现AJAX加载XML并解析的脚本
2009/07/25 Javascript
传智播客学习之JavaScript基础篇
2009/11/13 Javascript
Jquery 的扩展方法总结
2011/10/01 Javascript
通过JavaScript控制字体大小的代码
2011/10/04 Javascript
推荐40个非常优秀的jQuery插件和教程【系列三】
2011/11/09 Javascript
JavaScript之引用类型介绍
2012/08/10 Javascript
javascript 二进制运算技巧解析
2012/11/27 Javascript
js 定时器setTimeout无法调用局部变量的解决办法
2013/11/28 Javascript
Javascript使用post方法提交数据实例
2015/08/03 Javascript
JavaScript实现自动消除按钮功能的方法
2015/08/05 Javascript
基于JQuery实现图片轮播效果(焦点图)
2016/02/02 Javascript
JS实现设置ff与ie元素绝对位置的方法
2016/03/08 Javascript
jQuery通过写入cookie实现更换网页背景的方法
2016/04/15 Javascript
JS产生随机数的用法小结
2016/12/10 Javascript
socket.io学习教程之深入学习篇(三)
2017/04/29 Javascript
原生JS实现简单的倒计时功能示例
2018/08/30 Javascript
Python2.x和3.x下maketrans与translate函数使用上的不同
2015/04/13 Python
python+selenium识别验证码并登录的示例代码
2017/12/21 Python
python进行两个表格对比的方法
2018/06/27 Python
基于python cut和qcut的用法及区别详解
2019/11/22 Python
Python 实现劳拉游戏的实例代码(四连环、重力四子棋)
2021/03/03 Python
用css3制作纸张效果(外翻卷角)
2013/02/01 HTML / CSS
10分钟理解CSS3 FlexBox弹性布局
2018/12/20 HTML / CSS
Nordgreen英国官网:斯堪的纳维亚设计师手表
2018/10/24 全球购物
Lentiamo丹麦:购买便宜的隐形眼镜
2021/01/13 全球购物
本科生学习总结的自我评价
2013/10/02 职场文书
教师专业自荐信
2014/05/31 职场文书
计算机专业求职信
2014/06/02 职场文书
精神文明建设标语
2014/06/16 职场文书
学校食堂标语
2014/10/06 职场文书
2014年部门工作总结
2014/11/12 职场文书
会计专业自荐信范文
2015/03/05 职场文书
Oracle 数据仓库ETL技术之多表插入语句的示例详解
2021/04/12 Oracle
Python数据清洗工具之Numpy的基本操作
2021/04/22 Python