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 相关文章推荐
php时间不正确的解决方法
Apr 09 PHP
PHP 最大运行时间 max_execution_time修改方法
Mar 08 PHP
php利用cookie实现访问次数统计代码
May 19 PHP
php数组函数序列之array_unshift() 在数组开头插入一个或多个元素
Nov 07 PHP
利用PHP实现图片等比例放大和缩小的方法详解
Jun 06 PHP
php实现扫描二维码根据浏览器类型访问不同下载地址
Oct 15 PHP
smarty自定义函数用法示例
May 20 PHP
PHP 中魔术常量的实例详解
Oct 26 PHP
php使用fullcalendar日历插件详解
Mar 06 PHP
php封装的pdo数据库操作工具类与用法示例
May 08 PHP
php连接mysql数据库最简单的实现方法
Sep 24 PHP
解决在Laravel 中处理OPTIONS请求的问题
Oct 11 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
不支持fsockopen但支持culr环境下下ucenter与modoer通讯问题
2011/08/12 PHP
ThinkPHP提示错误Fatal error: Allowed memory size的解决方法
2015/02/12 PHP
PHP实现的简单在线计算器功能示例
2017/08/02 PHP
推荐40款强大的 jQuery 导航插件和教程(上篇)
2012/09/14 Javascript
js 浏览本地文件夹系统示例代码
2013/10/24 Javascript
js(JavaScript)实现TAB标签切换效果的简单实例
2014/02/26 Javascript
js数组中如何随机取出一个值
2014/06/13 Javascript
js 动态修改css文件的方法
2014/08/05 Javascript
jQuery实现动态表单验证时文本框抖动效果完整实例
2015/08/21 Javascript
教你如何终止JQUERY的$.AJAX请求
2016/02/23 Javascript
Angular.js中$apply()和$digest()的深入理解
2016/10/13 Javascript
JavaScript 实现 Tab 点击切换实例代码
2017/03/25 Javascript
vue.js评论发布信息可插入QQ表情功能
2017/08/08 Javascript
微信小程序 功能函数小结(手机号验证*、密码验证*、获取验证码*)
2017/12/08 Javascript
JS中‘hello’与new String(‘hello’)引出的问题详解
2018/08/14 Javascript
Vue props 单向数据流的实现
2018/11/06 Javascript
vue中的适配px2rem示例代码
2018/11/19 Javascript
NodeJs crypto加密制作token的实现代码
2019/11/15 NodeJs
JS 事件机制完整示例分析
2020/01/15 Javascript
基于leaflet.js实现修改地图主题样式的流程分析
2020/05/15 Javascript
vue实现给div绑定keyup的enter事件
2020/07/31 Javascript
python实现基本进制转换的方法
2015/07/11 Python
Python随机读取文件实现实例
2017/05/25 Python
numpy找出array中的最大值,最小值实例
2018/04/03 Python
PyQt5每天必学之弹出消息框
2018/04/19 Python
python Spyder界面无法打开的解决方法
2018/04/27 Python
python threading和multiprocessing模块基本用法实例分析
2019/07/25 Python
Python3爬虫中识别图形验证码的实例讲解
2020/07/30 Python
英国名牌服装购物网站:OD’s Designer
2019/09/02 全球购物
科技开发中心办公室主任岗位责任制
2014/02/10 职场文书
应届电子商务毕业自荐书范文
2014/02/11 职场文书
信息管理应届生求职信
2014/03/07 职场文书
个人委托书怎么写
2014/04/04 职场文书
关爱残疾人演讲稿
2014/05/24 职场文书
2015年个人招商工作总结
2015/04/25 职场文书
走进毛泽东观后感
2015/06/04 职场文书