前置條件
- 服務器已安裝 ImageMagick 並配置
convert 命令在 PATH 中。
- PHP 執行權限允許
exec 函數,目標目錄可寫。
核心代碼
$pdf_file = './pdf/demo.pdf';
$save_to = './jpg/demo.jpg'; // 確保 Apache 有寫入權限
exec('convert "'.$pdf_file.'" -colorspace RGB -resize 800 "'.$save_to.'"', $output, $return_var);
if ($return_var == 0) {
print "Conversion OK";
} else {
print "Conversion failed." . implode("\n", $output);
}
參數說明
-colorspace RGB:輸出色彩空間為 RGB(避免 CMYK 導致顏色異常)。
-resize 800:寬度縮放至 800px,高度等比縮放;可用 800x600! 強制尺寸。
- 多頁 PDF 會生成
demo-0.jpg、demo-1.jpg... 序列文件。
錯誤處理建議
- 檢查
$output 獲取 ImageMagick 錯誤詳情(如缺字體、權限不足)。
- 生產環境建議使用
Imagick PHP 擴展(OOP 接口),避免 exec 安全風險與性能開銷。
- 大文件轉換可能超時,需調整
max_execution_time 或異步處理。