源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

PHP中使用imagick实现把PDF转成图片

  • 时间:2022-09-01 16:14 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:PHP中使用imagick实现把PDF转成图片
PHP Manual里,对imagick的描述,真的是简洁,每个成员函数,点击打开就看到如下文本:
[u]复制代码[/u] 代码如下:
Warning This function is currently not documented; only its argument list is available.
刚才解决了PHP加载问题后,对图片的处理相当方便,网上随便找了一段:
[u]复制代码[/u] 代码如下:
<?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哦!
[u]复制代码[/u] 代码如下:
<?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那边异常了,查看错误输出:
[u]复制代码[/u] 代码如下:
PHP Fatal error:  Uncaught exception 'ImagickException' with message 'PostscriptDelegateFailed `test.pdf': No such file or directory'
百度谷歌了好久,最后灵机一动,不是说Postscript么?我找,我装。 这个Postscript,其实是GhostScript。 装好后,一跑,OK啦! [img]http://files.jb51.net/file_images/article/201501/201512691048085.jpg?201502691138[/img]
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部