顯示廣告
隱藏 ✕
看板 Mesak
作者 mesak (Mesak)
標題 [PHP] HTML轉圖片,PDF轉圖片
時間 2014年09月12日 Fri. AM 10:24:06


為了搞這個頭很痛,原先一直都裝 php 5.3.x 因為 wamp 2.2 付的最高到這個版本,不是很想換,因為配合的 HOST 也是這個版本,怕到時候寫了不一樣的 CODE 會報錯

不過為了處理這個動作,重新安裝了好幾次

這次重新測試用上 PHP 5.4 主要是看 php_imagick 這個 DLL 可以支援的程度,因為只有到 32位元的,所以後面檔案一律統一安裝32位元

WAMP + ImageMagick

Wampserver2.4-x86.exe
http://sourceforge.net/projects/wampserver/files/WampServer 2/Wampserver 2.4/

ImageMagick-6.8.0-0-Q16-windows-dll.exe
ImageMagick-6.7.1-0-Q16-windows-dll.exe //最後測試這板也可以用 ,chrome 報錯請用軟體下載
http://ftp.sunet.se/pub/multimedia/graphics/ImageMagick/binaries/

Ghostscript 9.14 //安裝的時候是這個版本正常運行 安裝x86 的
http://www.ghostscript.com/download/gsdnld.html
這邊安裝好之後要把路徑加到系統的 path 上
http://www.codedata.com.tw/book/java-basic/index.php?p=ch2-3

php_imagick-3.1.2-5.3-nts-vc9-x86.zip
http://pecl.php.net/package/imagick/3.1.2/windows
(只拿 php_imagick.dll 放到 wamp\bin\php\php5.4.16\ext 目錄下)

按照連結給的安裝順序處理

接著用工具列的圖示打開 php.ini ,手動加上
extension=php_imagick.dll

接著重啟 wamp

接著看看 ImageMagick 有沒有安裝完畢,用 index.php 看 有沒有 imagick ,有的話就成功了


寫程式部分 你需要任何一款 可以轉成 PDF 的 CLASS ,我用的是這款

http://html2pdf.fr/en/default

require_once('html2pdf.class.php');
$oPDF = new HTML2PDF('P','A6'); //size 參考文檔
$content = '<html><body><table border="1">';
for( $i = 1 ; $i <= 10 ; $i++ )
{
	
$content .= '<tr>';
	
$content .= '<td>';
	
$content .= $i * 10;
	
$content .= '</td>';
	
$content .= '<td>';
	
$content .= $i * 100;
	
$content .= '</td>';
	
$content .= '</tr>';
}
$content .= '</table></body></html>';
$oPDF->writeHTML($content, 0);
$sFile = $oPDF->Output('',TRUE);//以回傳值處理,不存檔

$pdf_file = realpath('image_test.pdf'); //如果有輸出檔案要用這個變數
$save_to = str_replace('image_test.pdf','image_test_pdf.png', $pdf_file); //只是為了設定圖片存檔的位置
$imagick = new Imagick();
//$imagick->setResolution(300,300); //DPI
$imagick->setResolution(100,100); //DPI //來源圖片dpi
$imagick->readImageBlob($sFile); //讀取二進位檔案
//$imagick->readImage($pdf_file); //讀取檔案可用這個參數
//$imagick->resampleImage(100,100,imagick::FILTER_UNDEFINED,1); //重新處理解析度
$imagick->setImageFormat('jpeg'); //存檔格式 最好設定一下
//$imagick->extentImage(400,400,0,0); //裁切
$imagick->trimImage(0); //去除白邊
//$image->setSize(800,600); //輸出 size
$imagick->writeImage($save_to);



--
Mesak Blog
http://mesak.tw
--
※ 作者: mesak 時間: 2014-09-12 10:24:06
※ 編輯: mesak 時間: 2014-09-12 11:56:36
※ 看板: Mesak 文章推薦值: 0 目前人氣: 0 累積人氣: 1195 
分享網址: 複製 已複製
r)回覆 e)編輯 d)刪除 M)收藏 ^x)轉錄 同主題: =)首篇 [)上篇 ])下篇