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伪静态页面函数附使用方法
Jun 20 PHP
smarty的保留变量问题
Oct 23 PHP
php关于array_multisort多维数组排序的使用说明
Jan 04 PHP
php图像处理函数大全(推荐收藏)
Jul 11 PHP
PHP扩展迁移为PHP7扩展兼容性问题记录
Feb 15 PHP
PHP基于反射机制实现插件的可插拔设计详解
Nov 10 PHP
php常用正则函数实例小结
Dec 29 PHP
php获取微信共享收货地址的方法
Dec 21 PHP
php中上传文件的的解决方案
Sep 25 PHP
PHP PDOStatement::getAttribute讲解
Feb 01 PHP
Yaf框架封装的MySQL数据库操作示例
Mar 06 PHP
php统计数组不同元素的个数的实例方法
Sep 26 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
destoon实现会员商铺中指定会员或会员组投放广告的方法
2014/08/21 PHP
PHP中include/require/include_once/require_once使用心得
2016/08/28 PHP
PHP Socket网络操作类定义与用法示例
2017/08/30 PHP
PHP实现搜索时记住状态的方法示例
2018/05/11 PHP
PHP简单实现记录网站访问量功能示例
2018/06/06 PHP
JS 自动完成 AutoComplete(Ajax 查询)
2009/07/07 Javascript
js 获取class的元素的方法 以及创建方法getElementsByClassName
2013/03/11 Javascript
利用js实现在浏览器状态栏显示访问者在本页停留的时间
2013/12/29 Javascript
javascript数组详解
2014/10/22 Javascript
原生node.js案例--前后台交互
2017/02/20 Javascript
利用imgareaselect辅助后台实现图片上传裁剪
2017/03/02 Javascript
Vue应用部署到服务器的正确方式
2017/07/15 Javascript
浅谈在Vue-cli里基于axios封装复用请求
2017/11/06 Javascript
iView-admin 动态路由问题的解决方法
2018/10/03 Javascript
利用vue重构有赞商城的思路以及总结整理
2019/02/21 Javascript
vue项目中将element-ui table表格写成组件的实现代码
2019/06/12 Javascript
[48:56]2018DOTA2亚洲邀请赛 3.31 小组赛 A组 VG vs KG
2018/03/31 DOTA
[01:16:50]DOTA2-DPC中国联赛 正赛 Phoenix vs CDEC BO3 第一场 3月7日
2021/03/11 DOTA
Python实现修改文件内容的方法分析
2018/03/25 Python
python XlsxWriter模块创建aexcel表格的实例讲解
2018/05/03 Python
Django添加feeds功能的示例
2018/08/07 Python
HTML5 Canvas渐进填充与透明实现图像的Mask效果
2013/07/11 HTML / CSS
野兽派官方旗舰店:THE BEAST 野兽派
2016/08/05 全球购物
外企测试工程师面试题
2015/02/01 面试题
公司年会演讲稿范文
2014/01/11 职场文书
公司财务流程之主管工作流程
2014/03/03 职场文书
2014年国庆节演讲稿
2014/09/19 职场文书
教师“一帮一”结对子活动总结
2015/05/07 职场文书
2015年财务个人工作总结范文
2015/05/22 职场文书
小学语文教师研修感悟
2015/11/18 职场文书
2016年五一促销广告语
2016/01/28 职场文书
大学生如何逃脱“毕业季创业队即散伙”魔咒?
2019/08/19 职场文书
导游词之西安骊山
2019/12/20 职场文书
golang在GRPC中设置client的超时时间
2021/04/27 Golang
详解Go与PHP的语法对比
2021/05/29 PHP
Python实现归一化算法详情
2022/03/18 Python