Я пытаюсь преобразовать PDF в IMG (JPG) с помощью PHP.
Я использую расширение Imagick.
это мой код
$fp_pdf = fopen($pdf, 'rb');
$img = new imagick(); // [0] can be used to set page number
$img->readImageFile($fp_pdf);
$img->setImageFormat( "jpg" );
$img->setImageCompression(imagick::COMPRESSION_JPEG);
$img->setImageCompressionQuality(90);
$img->setResolution(300,300);
$img->setImageUnits(imagick::RESOLUTION_PIXELSPERINCH);
$data = $img->getImageBlob();
мой исходный файл pdf имеет правильный размер (210x297 мм, как у A4). И все выглядит хорошо. Но мой jpg имеет размер страницы 842x595 пикселей, а DPI - 72.
и файл img на бумаге намного меньше, чем pdf, когда я его распечатал.
как правильно сделать файл изображения из pdf и сделать его размером с pdf (на бумаге)
Вы можете использовать imagemagick через exec () или подобное, аргументы оболочки гораздо менее многословны, чем расширение PHP.
$pdf_file = escapeshellarg( "mysafepdf.pdf" );
$jpg_file = escapeshellarg( "output.jpg" );
$result = 0;
exec( "convert -density 300 {$pdf_file} {$jpg_file}", null, $result );
// at this point $result should == 0 if the conversion was successful
Это опция «-density» (которая устанавливает DPI для чтения исходного файла как), которая специально решает вашу проблему.
Также imagemagick по умолчанию использует параметр -quality 92 для записи JPEG в большинстве случаев, так что вам, вероятно, не нужно явно объявлять его.