使用php

时间:2015-11-11 22:02:55

标签: php image-processing imagick

我正在尝试获取pdf文件的图像。但问题是我的代码会为某些pdf文件产生错误。可能是文件大小问题

这是我的代码

$saved_file_location = "images.pdf";
$destination_dir = "t";
$Name = "123";

exec('convert -verbose -density 150 '.$saved_file_location.' -crop 1020x490+128+40 -quality 90 '.$destination_dir."/".$Name.'-%03d.jpg');
sleep(5);
//echo filesize($destination_dir."/".$Name.'-000.jpg'). "<br>";
if(filesize($destination_dir."/".$Name.'-000.jpg') < 10000)
{
    exec('convert -verbose -density 150 '.$saved_file_location.' -crop 1020x490+128+580 -quality 90 '.$destination_dir."/".$Name.'-%03d.jpg');
    sleep(5);
    //echo filesize($destination_dir."/".$Name.'-001.jpg')."<br>";
    if(filesize($destination_dir."/".$Name.'-001.jpg') < 10000)
    {
        exec('convert -verbose -density 150 '.$saved_file_location.' -crop 1020x490+128+1125 -quality 90 '.$destination_dir."/".$Name.'-%03d.jpg');
    }
}

这个错误我得到

PHP Warning:  filesize(): stat failed for t/123-000.jpg in /home3/domain/pdf_to_images.php on line 10

有段时间代码工作正常并生成pdf文件的多个图像,但有时我得到此错误

1 个答案:

答案 0 :(得分:1)

首先,ImageMagick convert命令在内部使用ghostscript的gs命令,gsconvert相比更快,所以使用ghostscript总是好的您没有使用ImageMagick特定功能。而另一件事是不是自己构建命令我建议使用已编写和测试的库,以避免浪费时间试图理解命令的所有组合。

你会找到好的图书馆packagist.org

这里有一个我写的库,将来会有用PdfLib来读你的问题

$pdflib = new ImalH\PDFLib\PDFLib();
$pdflib->setPdfPath($pdf_file_path);
$pdflib->setOutputPath($folder_path_for_images);
$pdflib->setImageFormat(\ImalH\PDFLib\PDFLib::$IMAGE_FORMAT_PNG);
$pdflib->setDPI(300);
$pdflib->setPageRange(1,$pdflib->getNumberOfPages());
$pdflib->convert();