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实现根据字符串生成对应数组的方法
Sep 22 PHP
php将access数据库转换到mysql数据库的方法
Dec 24 PHP
php简单实现快速排序的方法
Apr 04 PHP
WordPress主题制作之模板文件的引入方法
Dec 28 PHP
非常实用的php验证码类
May 15 PHP
屏蔽PHP默认设置中的Notice警告的方法
May 20 PHP
浅析php-fpm静态和动态执行方式的比较
Nov 09 PHP
php使用PDO事务配合表格读取大量数据插入操作实现方法
Feb 16 PHP
Laravel 5.4.36中session没有保存成功问题的解决
Feb 19 PHP
PHP基于curl模拟post提交json数据示例
Jun 22 PHP
PHP实时统计中文字数和区别
Feb 28 PHP
php 防护xss,PHP的防御XSS注入的终极解决方案
Apr 01 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伪造referer实例代码
2008/09/20 PHP
php ci框架验证码实例分析
2013/06/26 PHP
安装apache2.2.22配置php5.4(具体操作步骤)
2013/06/26 PHP
php遍历文件夹下的所有文件和子文件夹示例
2014/03/20 PHP
PHP浮点数精度问题汇总
2015/05/13 PHP
浅谈PHP接收POST数据方式
2015/06/05 PHP
浅谈PHP中output_buffering
2015/07/13 PHP
php生成酷炫的四个字符验证码
2016/04/22 PHP
如何修改yii2.0自带的user表为其它的表
2017/08/01 PHP
Mootools 图片展示插件(lightbox,ImageMenu)收集集合
2010/05/21 Javascript
jquery.jstree 增加节点的双击事件代码
2010/07/27 Javascript
Microsfot .NET Framework4.0框架 安装失败的解决方法
2013/08/14 Javascript
ie7+背景透明文字不透明超级简单的实现方法
2014/01/17 Javascript
jquery操作checked属性以及disabled属性的多种方法
2014/06/20 Javascript
js 左右悬浮对联广告特效代码
2014/12/12 Javascript
jQuery中$.click()无效问题分析
2015/01/29 Javascript
在Javascript中处理数组之toSource()方法的使用
2015/06/09 Javascript
JavaScript运动减速效果实例分析
2015/08/04 Javascript
JQUERY表单暂存功能插件分享
2016/02/23 Javascript
javascript js 操作数组 增删改查的简单实现
2016/06/20 Javascript
微信小程序 后台https域名绑定和免费的https证书申请详解
2016/11/10 Javascript
JS实现复选框的全选和批量删除功能
2017/04/05 Javascript
jQuery实现所有验证通过方可提交的表单验证
2017/11/21 jQuery
vue项目中用cdn优化的方法
2018/01/03 Javascript
vuejs点击class变化的实例
2018/09/05 Javascript
详解基于mpvue微信小程序下载远程图片到本地解决思路
2019/05/16 Javascript
js实现淘宝首页的banner栏效果
2019/11/26 Javascript
[03:12]完美世界DOTA2联赛PWL DAY6集锦
2020/11/05 DOTA
jupyter安装小结
2016/03/13 Python
对Python Class之间函数的调用关系详解
2019/01/23 Python
详解Python Matplotlib解决绘图X轴值不按数组排序问题
2019/08/05 Python
CheapTickets泰国:廉价航班,查看促销价格并预订机票
2019/12/28 全球购物
俄罗斯第一家多品牌在线奢侈品精品店:Aizel.ru
2020/09/06 全球购物
企业文化演讲稿
2014/05/20 职场文书
优秀班组事迹材料
2014/12/24 职场文书
Mysql多层子查询示例代码(收藏夹案例)
2022/03/31 MySQL