Imagemagic / pdf to jpg / почему плохое качество текста?

Рейтинг: 1Ответов: 1Опубликовано: 05.04.2015

Итак, перевожу сканированный текст из PDF в JPG (размер файла 5 мб) следующим образом:

$pdf_file = $_SERVER['DOCUMENT_ROOT'].'/file.pdf';
$im = new Imagick($pdf_file);
$i=0;
foreach($im as $_img) {
   $i++;
   $_img->setResolution(300, 300);
   $_img->setImageFormat('jpeg');
   //$_img->resizeImage(1600, 2400, imagick::FILTER_LANCZOS, 1); 
   $_img->writeImage($_SERVER['DOCUMENT_ROOT'].'/img/p-'.$i.'.jpg');
}

В результате получаю в папку img JPG изображения, но качество текста настолько ужасно, что прочитать невозможно ничего.

Вот пример изображения, хотя оригинал в pdf - отличного качества:

Пробовал делать ресайз картинки (закомментировано), пробовал ставить $_img->setResolution(800, 1200);, результата нет.

Зачем это нужно: нужно сжимать размер пдф-документа средствами PHP, для этого выбрал схему: пдф->jpg / jpg->сжатие / jpg->pdf

Есть идеи?

Ответы

▲ 2Принят

Разрешение необходимо устанавливать до загрузки файла.

Создайте пустой экземпляр new Imagick(), установите необходимое вам разрешение с помощью Imagick::setResolution и лишь затем грузите ваш PDF с помощью Imagick::readImage.

См. Imagick::setResolution:

Imagick::setResolution() must be called before loading or creating an image.