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图片上传类带图片显示
Nov 25 PHP
很好用的PHP数据库类
May 27 PHP
关于更改Zend Studio/Eclipse代码风格主题的介绍
Jun 23 PHP
php解决约瑟夫环示例
Apr 09 PHP
php中current、next与reset函数用法实例
Nov 17 PHP
thinkphp中memcache的用法实例
Nov 29 PHP
修改WordPress中文章编辑器的样式的方法详解
Dec 15 PHP
yii2框架中使用下拉菜单的自动搜索yii-widget-select2实例分析
Jan 09 PHP
PHP绕过open_basedir限制操作文件的方法
Jun 10 PHP
php使用fputcsv实现大数据的导出操作详解
Feb 27 PHP
浅析PHP echo 和 print 语句
Jun 30 PHP
PHP实现Snowflake生成分布式唯一ID的方法示例
Aug 30 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判断远程url是否有效的几种方法小结
2011/10/08 PHP
Php无限级栏目分类读取的实现代码
2014/02/19 PHP
PHP中is_file不能替代file_exists的理由
2014/03/04 PHP
Yii2 队列 shmilyzxt/yii2-queue 简单概述
2017/08/02 PHP
jquery validate poshytip 自定义样式
2012/11/26 Javascript
不用一句js代码初始化组件
2016/01/27 Javascript
jQuery新窗口打开外链接
2016/07/21 Javascript
jQuery 判断是否包含在数组中Array[]的方法
2016/08/03 Javascript
javascript 中null和undefined区分和比较
2017/04/19 Javascript
详解原生js实现offset方法
2017/06/15 Javascript
通过fastclick源码分析彻底解决tap“点透”
2017/12/24 Javascript
在 Angular6 中使用 HTTP 请求服务端数据的步骤详解
2018/08/06 Javascript
vue 监听某个div垂直滚动条下拉到底部的方法
2018/09/15 Javascript
node+multer实现图片上传的示例代码
2020/02/18 Javascript
Vue中使用better-scroll实现轮播图组件
2020/03/07 Javascript
Element DateTimePicker日期时间选择器的使用示例
2020/07/27 Javascript
vue任意关系组件通信与跨组件监听状态vue-communication
2020/10/18 Javascript
python进阶教程之动态类型详解
2014/08/30 Python
基于Django contrib Comments 评论模块(详解)
2017/12/08 Python
Python中is和==的区别详解
2018/11/15 Python
Django JWT Token RestfulAPI用户认证详解
2019/01/23 Python
Win下PyInstaller 安装和使用教程
2019/12/25 Python
mac 上配置Pycharm连接远程服务器并实现使用远程服务器Python解释器的方法
2020/03/19 Python
python+openCV对视频进行截取的实现
2020/11/27 Python
python中altair可视化库实例用法
2021/01/26 Python
英国护肤品购物网站:Beauty Expert
2016/08/19 全球购物
了解AppleShare protocol(AppleShare协议)吗
2015/08/28 面试题
党的群众路线教育实践活动总结材料
2014/10/30 职场文书
2014年团队工作总结
2014/11/24 职场文书
人事行政助理岗位职责
2015/04/11 职场文书
2016社区平安家庭事迹材料
2016/02/26 职场文书
餐厅营销的秘密:为什么老顾客会流水?
2019/08/08 职场文书
Python实现生成bmp图像的方法
2021/06/13 Python
Netty分布式客户端接入流程初始化源码分析
2022/03/25 Java/Android
MySQL 条件查询的常用操作
2022/04/28 MySQL
jdbc中自带MySQL 连接池实践示例
2022/07/23 MySQL