Преобразование PDF в JPG с помощью PHP

Я пытаюсь преобразовать 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 (на бумаге)

26
задан Mat 24 December 2011 в 13:43
поделиться

1 ответ

Вы можете использовать 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 в большинстве случаев, так что вам, вероятно, не нужно явно объявлять его.

11
ответ дан 28 November 2019 в 07:49
поделиться
Другие вопросы по тегам:

Похожие вопросы: