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 array_intersect比array_diff快(附详细的使用说明)
Jul 03 PHP
PHP中数组合并的两种方法及区别介绍
Sep 14 PHP
解析php函数method_exists()与is_callable()的区别
Jun 21 PHP
PHP包含文件函数include、include_once、require、require_once区别总结
Apr 05 PHP
PHP图片处理之使用imagecopyresampled函数实现图片缩放例子
Nov 19 PHP
php实现encode64编码类实例
Mar 24 PHP
php提高网站效率的技巧
Sep 29 PHP
优化WordPress中文章与评论的时间显示
Jan 12 PHP
解决微信授权回调页面域名只能设置一个的问题
Dec 11 PHP
Yii2 加载css、js 载静态资源的方法
Mar 10 PHP
thinkphp5.0整合phpsocketio完整攻略(绕坑)
Oct 12 PHP
PHP获取远程http或ftp文件的md5值的方法
Apr 15 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
PHP中uploaded_files函数使用方法详解
2011/03/09 PHP
Laravel框架数据库迁移操作实例详解
2020/04/06 PHP
Mootools 1.2教程 同时进行多个形变动画
2009/09/15 Javascript
关于javascript DOM事件模型的两件事
2010/07/22 Javascript
用js实现trim()的解决办法
2013/04/16 Javascript
js渐变显示渐变消失示例代码
2013/08/01 Javascript
JS实现超过长度限制后自动跳转下一款文本框的方法
2015/02/23 Javascript
JavaScript中constructor()方法的使用简介
2015/06/05 Javascript
url中的特殊符号有什么含义(推荐)
2016/06/17 Javascript
jQuery插件cxSelect多级联动下拉菜单实例解析
2016/06/24 Javascript
详解Vuejs2.0之异步跨域请求
2017/04/20 Javascript
使用 Node.js 对文本内容分词和关键词抽取
2017/05/27 Javascript
NodeJS实现不可逆加密与密码密文保存的方法
2018/03/16 NodeJs
JavaScript callback回调函数用法实例分析
2018/05/08 Javascript
vue 路由守卫(导航守卫)及其具体使用
2020/02/25 Javascript
[07:37]DOTA2-DPC中国联赛2月2日Recap集锦
2021/03/11 DOTA
python中合并两个文本文件并按照姓名首字母排序的例子
2014/04/25 Python
Eclipse中Python开发环境搭建简单教程
2016/03/23 Python
一文总结学习Python的14张思维导图
2017/10/17 Python
Django中密码的加密、验密、解密操作
2019/12/19 Python
将labelme格式数据转化为标准的coco数据集格式方式
2020/02/17 Python
Python 在函数上添加包装器
2020/07/28 Python
python爬虫使用正则爬取网站的实现
2020/08/03 Python
python 浮点数四舍五入需要注意的地方
2020/08/18 Python
CSS3 制作绽放的莲花采用效果叠加实现
2013/01/31 HTML / CSS
免费获得微软MCSD证书赶快行动吧!
2012/11/13 HTML / CSS
HTML5录音实践总结(Preact)
2020/05/07 HTML / CSS
TCP协议通讯的过程和步骤是什么
2015/10/18 面试题
实习公司领导推荐函
2014/05/21 职场文书
如何写求职信
2014/05/24 职场文书
国庆宣传标语
2014/06/30 职场文书
小区的门卫岗位职责
2014/10/01 职场文书
学校捐款活动总结
2015/05/09 职场文书
2015年社区平安建设工作总结
2015/05/13 职场文书
小学英语教学反思范文
2016/02/15 职场文书
2019年大学生暑期社会实践调查报告模板
2019/11/07 职场文书