php中使用imagemagick實現把PDF轉成圖片(以php5.3為例)


本文以windows7+php5.3為例(php5.5以上版本教程及資源網上多):
所需資源(imagick + GPL Ghostscript + vc9):鏈接:https://pan.baidu.com/s/1mj0Sa84 密碼:zlzr
開發步驟:
根據php版本下載對應的ImageMagick版本,php5.3對應的imagick版本是6.8-6.9,
1. 安裝ImageMagick
安裝時,路徑中不能出現空格比如D:\Program Files (x86)\ImageMagick 這樣是錯誤的。建議安裝目錄為D:\\ImageMagick,使用默認選項安裝即可。
安裝完成后,檢查D:\\ImageMagick是否加添加到了環境變量。
檢查方法:計算機(我的電腦)-> 右鍵屬性 -> 高級系統設置 -> 高級 -> 環境變量 -> 系統變量 -> Path
 
然后選中Path,點擊編輯,查看ImageMagick安裝路徑是否在變量值中,如果沒有,請添加進去,注意用英文的分號分隔:
 
2. 把下載下來的php_imagick.dll放到php 擴展文件目錄 php/ext 中。
3. 在 php.ini 配置文件中添加,extension=php_imagick.dll。
4. 將ImageMagick安裝目錄下的這些文件拷貝到php根目錄下
 
5. 重啟電腦,只重啟apache不管用的情況下,重啟下PC。因為擴展底層使用的是imageMagic軟件,所以軟件重啟電腦,重新加載軟件,並刷新path路徑。
6. 重啟后,打開 phpinfo頁面,查看,擴展已經安裝成功。如果還未安裝成功,極有可能imagemagick軟件版本過高,請選擇更低一級的版本安裝。
7. 安裝GPL GhostScript(很多時候都忘了這步,會導致readImage那邊異常了)
8. PHP將PDF轉成PNG的后台代碼(可以根據自己需求進行改動):
 
<?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>";
}
?> 

 

 (碼字不易,且看且珍惜!如有錯誤,請多多指教!)
 
 
 
 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM