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 相关文章推荐
dedecms 批量提取第一张图片最为缩略图的代码(文章+软件)
Oct 29 PHP
调整优化您的LAMP应用程序的5种简单方法
Jun 26 PHP
163的邮件用phpmailer发送(实例详解)
Jun 24 PHP
php number_format() 函数通过千位分组来格式化数字的实现代码
Aug 06 PHP
php命名空间学习详解
Feb 27 PHP
PHP扩展模块memcached长连接使用方法分析
Dec 24 PHP
递归实现php数组转xml的代码分享
May 14 PHP
PHP中Closure类的使用方法及详解
Oct 09 PHP
PHP制作用户注册系统
Oct 23 PHP
Yii2实现上下联动下拉框功能的方法
Aug 10 PHP
Laravel 集成 Geetest验证码的方法
May 14 PHP
PHP实现数组和对象的相互转换操作示例
Mar 20 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
2020显卡排行榜天梯图 显卡天梯图2020年3月最新版
2020/04/02 数码科技
实例化php类时传参的方法分析
2020/06/05 PHP
childNodes.length与children.length的区别
2009/05/14 Javascript
url地址自动加#号问题说明
2010/08/21 Javascript
基于jQuery的动态表格插件
2011/03/28 Javascript
jQuery Mobile的loading对话框显示/隐藏方法分享
2013/11/26 Javascript
jQuery不兼容input的change事件问题解决过程
2014/12/05 Javascript
Javascript中arguments用法实例分析
2015/06/13 Javascript
浅谈js构造函数的方法与原型prototype
2016/07/04 Javascript
Web性能优化系列 10个提升JavaScript性能的技巧
2016/09/27 Javascript
javascript输出AscII码扩展集中的字符方法
2016/12/26 Javascript
微信小程序 在线支付功能的实现
2017/03/14 Javascript
vue子组件使用自定义事件向父组件传递数据
2017/05/27 Javascript
JavaScript实现单例模式实例分享
2017/12/22 Javascript
JS实现获取word文档内容并输出显示到html页面示例
2018/06/23 Javascript
微信小程序url传参写变量的方法
2018/08/09 Javascript
JS实现滑动拼图验证功能完整示例
2020/03/29 Javascript
通过vue刷新左侧菜单栏操作
2020/08/06 Javascript
VUE中鼠标滚轮使div左右滚动的方法详解
2020/12/14 Vue.js
[03:55]2016国际邀请赛中国区预选赛首日TOP10精彩集锦
2016/06/27 DOTA
[01:02:04]EG vs Liquid 2019国际邀请赛淘汰赛 败者组 BO3 第一场 8.23
2019/09/05 DOTA
在Python中使用AOP实现Redis缓存示例
2017/07/11 Python
Python3 处理JSON的实例详解
2017/10/29 Python
python GUI库图形界面开发之PyQt5下拉列表框控件QComboBox详细使用方法与实例
2020/02/27 Python
基于keras中的回调函数用法说明
2020/06/17 Python
pandas to_excel 添加颜色操作
2020/07/14 Python
Python lambda表达式原理及用法解析
2020/08/18 Python
购买英国原创艺术:Art Gallery
2018/08/25 全球购物
下述程序的作用是计算机数组中的最大元素值及其下标
2012/11/26 面试题
幼师专业求职推荐信
2013/11/08 职场文书
指导教师评语
2014/04/26 职场文书
观看信仰心得体会
2014/09/04 职场文书
中学生纪念九一八事变演讲稿
2014/09/14 职场文书
golang 定时任务方面time.Sleep和time.Tick的优劣对比分析
2021/05/05 Golang
vue完美实现el-table列宽自适应
2021/05/08 Vue.js
Keras多线程机制与flask多线程冲突的解决方案
2021/05/28 Python