看板 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 .= '</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);
$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
回列表(←)
分享