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 相关文章推荐
解决dede生成静态页和动态页转换的一些问题,及火车采集入库生成动态的办法
Mar 29 PHP
PHP 下载文件时自动添加bom头的方法实例
Jan 10 PHP
PHP中source #N问题的解决方法
Jan 27 PHP
php function用法如何递归及return和echo区别
Mar 07 PHP
PHP将回调函数作用到给定数组单元的方法
Aug 19 PHP
字符串长度函数strlen和mb_strlen的区别示例介绍
Sep 09 PHP
Linux操作系统安装LAMP环境
Jun 26 PHP
简单谈谈PHP vs Node.js
Jul 17 PHP
浅析php设计模式之数据对象映射模式
Mar 03 PHP
thinkPHP5框架auth权限控制类与用法示例
Jun 12 PHP
php学习笔记之字符串常见操作总结
Jul 16 PHP
php 实现银联商务H5支付的示例代码
Oct 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
php生成EAN_13标准条形码实例
2013/11/13 PHP
PHP保存带BOM文件的方法
2015/02/12 PHP
PHP实现二维数组按照指定的字段进行排序算法示例
2019/04/23 PHP
兼容Mozilla必须知道的知识。
2007/01/09 Javascript
WEB 浏览器兼容 推荐收藏
2010/05/14 Javascript
Javascript之this关键字深入解析
2013/11/12 Javascript
容易造成JavaScript内存泄露几个方面
2014/09/04 Javascript
js实现jquery的offset()方法实例
2015/01/10 Javascript
Node.js 学习笔记之简介、安装及配置
2015/03/03 Javascript
jQuery实现验证年龄简单思路
2016/02/24 Javascript
Javascript实现跑马灯效果的简单实例
2016/05/31 Javascript
Vue.2.0.5实现Class 与 Style 绑定的实例
2017/06/20 Javascript
vue引入新版 vue-awesome-swiper插件填坑问题
2018/01/25 Javascript
vue.js 实现评价五角星组件的实例代码
2018/08/13 Javascript
详解解决Vue相同路由参数不同不会刷新的问题
2018/10/12 Javascript
node Buffer缓存区常见操作示例
2019/05/04 Javascript
JavaScript制作3D旋转相册
2020/08/02 Javascript
Vue左滑组件slider使用详解
2020/08/21 Javascript
JavaScript 实现下雪特效的示例代码
2020/09/09 Javascript
[14:50]2018DOTA2亚洲邀请赛开幕式
2018/04/03 DOTA
Python编程之列表操作实例详解【创建、使用、更新、删除】
2017/07/22 Python
Python实现matplotlib显示中文的方法详解
2018/02/06 Python
浅谈python中字典append 到list 后值的改变问题
2018/05/04 Python
Python二进制串转换为通用字符串的方法
2018/07/23 Python
python求最大值,不使用内置函数的实现方法
2019/07/09 Python
pytorch中图像的数据格式实例
2020/02/11 Python
paramiko使用tail实时获取服务器的日志输出详解
2020/12/06 Python
台湾百利市购物中心:e-Payless
2017/08/16 全球购物
jQuery treeview树形结构应用
2021/03/24 jQuery
临床医师专业个人自我评价范文
2013/11/07 职场文书
求职信的最佳写作思路
2014/02/01 职场文书
开学典礼主持词
2014/03/19 职场文书
工作年限证明范本
2015/06/15 职场文书
2016年读书月活动总结范文
2016/04/06 职场文书
Python爬虫基础之爬虫的分类知识总结
2021/05/13 Python
Python编解码问题及文本文件处理方法详解
2021/06/20 Python