我有下面这个 PHP 函数,可以将本地的 PDF 文件转换成图片。简单来说,我希望每一页 PDF 都能转换成单独的一张图片。
该函数将 PDF 转换为图片 - 但仅是最后一页。我希望每一页的 PDF 都被转换为图像并编号。而不仅仅是 PDF 的最后一页。
目前,此函数将example.pdf
的最后一页转换为example-0.jpg
。我确定问题在于for
方法中。我错过了什么?
$file_name = 'example.pdf'; // using just for this example, I pull $file_name from another function
function _create_preview_images($file_name) {
// Strip document extension
$file_name = basename($file_name, '.pdf');
// Convert this document
// Each page to single image
$img = new imagick('uploads/'.$file_name.'.pdf');
// Set background color and flatten
// Prevents black background on objects with transparency
$img->setImageBackgroundColor('white');
$img = $img->flattenImages();
// Set image resolution
// Determine num of pages
$img->setResolution(300,300);
$num_pages = $img->getNumberImages();
// Compress Image Quality
$img->setImageCompressionQuality(100);
// Convert PDF pages to images
for($i = 0;$i < $num_pages; $i++) {
// Set iterator postion
$img->setIteratorIndex($i);
// Set image format
$img->setImageFormat('jpeg');
// Write Images to temp 'upload' folder
$img->writeImage('uploads/'.$file_name.'-'.$i.'.jpg');
}
$img->destroy();
}
$img = new imagick('file.pdf[0]');
来获取第一页。 - dev-null-dweller$img->flattenImages();
将所有页面合并在一起,并将文件导出为单个图像,而不管页面数量如何。有关具有黑色背景的多页PDF的解决方案,请参见https://dev59.com/_oTca4cB1Zd3GeqPBfbb。 - MarcinWolny