需要先安裝php的imagick擴(kuò)展,兩種方式,第一種是使用php,第二種是使用命令執(zhí)行
隨便用哪種執(zhí)行需要修改nginx配置文件增加:proxy_read_timeout 600s;使其鏈接60秒后不斷,不然pdf一旦過大60秒無法完成工作就斷開鏈接了
$pdfFile = './public/123.pdf'; // PDF文件路徑
$outputDir = './public/pdf/'; // 輸出目錄
// 確保Imagick擴(kuò)展已啟用
if (!extension_loaded('imagick')) {
return abort('需要啟用Imagick擴(kuò)展');
}
// 創(chuàng)建Imagick對象
$imagick = new \Imagick();
// 設(shè)置分辨率為300 DPI
$imagick->setResolution(300, 300);
// 打開PDF文件
$imagick->readImage($pdfFile);
// 遍歷每一頁并保存為圖片
foreach ($imagick as $key => $imag) {
// 設(shè)置圖片格式和質(zhì)量
$imag->setImageFormat('jpeg');
$imag->setCompressionQuality(100);
// 構(gòu)建圖片輸出路徑
$outputFile = $outputDir . 'page-' . ($key + 1) . '.jpg';
// 寫入圖片文件
$imag->writeImage($outputFile);
}
// 清理資源
$imagick->clear();
$imagick->destroy();
return 'PDF轉(zhuǎn)換成圖片成功。';
// PDF文件路徑
$pdfFile = './public/123456.pdf';
// 輸出圖片的路徑(替換%d為頁面索引,convert會自動處理)
$outputDir = './public/pdf/';
// 確保輸出目錄存在
if (!is_dir($outputDir)) {
mkdir($outputDir, 0777, true);
}
// 調(diào)用convert命令,將PDF轉(zhuǎn)換為PNG圖片
// 注意:這里使用了-density參數(shù)來設(shè)置DPI,你可以根據(jù)需要調(diào)整
$command = "convert -density 300 $pdfFile $outputDir/output_%d.jpg";
// 執(zhí)行命令
exec($command, $output, $returnVar);
if ($returnVar === 0) {
return "pdf轉(zhuǎn)圖片成功";
} else {
echo "錯(cuò)誤:";
print_r($output);
}