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 _autoload自动加载类与机制分析
Feb 10 PHP
php定时计划任务的实现方法详解
Jun 06 PHP
使用php语句将数据库*.sql文件导入数据库
May 05 PHP
php截取字符串函数substr,iconv_substr,mb_substr示例以及优劣分析
Jun 10 PHP
php中getservbyport与getservbyname函数用法实例
Nov 18 PHP
php中最简单的字符串匹配算法
Dec 16 PHP
简单谈谈favicon
Jun 10 PHP
PHP中static关键字以及与self关键字的区别
Jul 01 PHP
深入浅析PHP7.0新特征(五大新特征)
Oct 29 PHP
PHP性能优化大全(php.ini)
May 20 PHP
php 使用html5实现多文件上传实例
Oct 24 PHP
PHP中字符串长度的截取用法示例
Jan 12 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
VML绘图板②脚本--VMLgraph.js、XMLtool.js
2006/10/09 PHP
AJAX for PHP简单表数据查询实例
2007/01/02 PHP
php5编程中的异常处理详细方法介绍
2008/07/29 PHP
php中如何同时使用session和cookie来保存用户登录信息
2013/07/05 PHP
php生成QRcode实例
2014/09/22 PHP
举例讲解PHP面对对象编程的多态
2015/08/12 PHP
jQuery 使用手册(六)
2009/09/23 Javascript
JQuery 获得绝对,相对位置的坐标方法
2010/02/09 Javascript
JS字符串累加Array不一定比字符串累加快(根据电脑配置)
2012/05/14 Javascript
nodejs win7下安装方法
2012/05/24 NodeJs
JavaScript 判断浏览器是否支持SVG的代码
2013/03/21 Javascript
jQuery提交多个表单的小例子
2013/06/30 Javascript
jquery合并表格中相同文本的相邻单元格
2015/07/17 Javascript
几种响应式文字详解
2017/05/19 Javascript
对象不支持indexOf属性或方法的解决方法(必看)
2017/05/28 Javascript
vue+socket.io+express+mongodb 实现简易多房间在线群聊示例
2017/10/21 Javascript
实例分析js事件循环机制
2017/12/13 Javascript
webpack多入口文件页面打包配置详解
2018/01/09 Javascript
javascript中的隐式调用
2018/02/10 Javascript
使用JavaScript中的lodash编写双色球效果
2018/06/24 Javascript
vue 中的 render 函数作用详解
2020/02/28 Javascript
详解关于Vue单元测试的几个坑
2020/04/26 Javascript
viewer.js实现图片预览功能
2020/06/24 Javascript
Python爬虫代理IP池实现方法
2017/01/05 Python
Django 静态文件配置过程详解
2019/07/23 Python
利用python读取YUV文件 转RGB 8bit/10bit通用
2019/12/09 Python
django自定义模板标签过程解析
2019/12/14 Python
医院安全生产月活动总结
2014/07/05 职场文书
文员转正自我鉴定怎么写
2014/09/29 职场文书
教师党员个人自我评价
2015/03/04 职场文书
综合素质自我评价评语
2015/03/06 职场文书
病假证明模板
2015/06/19 职场文书
学子宴致辞大全
2015/07/27 职场文书
技术入股协议书
2016/03/22 职场文书
《弟子规》读后感:知廉耻、明是非、懂荣辱、辨善恶
2019/12/03 职场文书
mysql聚集索引、辅助索引、覆盖索引、联合索引的使用
2022/02/12 MySQL