it-swarm.com.ru

Как преобразовать документ PDF в изображение предварительного просмотра на PHP?

Какие библиотеки, расширения и т.д. Потребуются для рендеринга части документа PDF в файл изображения?

Большинство библиотек PHP PDF, которые я нашел, сосредоточены вокруг создания документов PDF, но есть простой способ визуализации документа в формате изображения, подходящем для веб-использования ?

Наше окружение - это LAMP-стек.

185
Mathew Byrne

Вам необходимо ImageMagick и GhostScript

<?php
$im = new imagick('file.pdf[0]');
$im->setImageFormat('jpg');
header('Content-Type: image/jpeg');
echo $im;
?>

[0] означает page 1.

215
Paolo Bergantino

Для тех, у кого по какой-либо причине нет ImageMagick, функции Gd также будут работать в сочетании с GhostScript. Запустите команду ghostscript с помощью exec(), чтобы преобразовать PDF в JPG, и управляйте полученным файлом с помощью imagecreatefromjpeg().

Запустите команду ghostscript:

exec('gs -dSAFER -dBATCH -sDEVICE=jpeg -dTextAlphaBits=4 -dGraphicsAlphaBits=4 -r300 -sOutputFile=whatever.jpg input.pdf')

Для манипуляции создайте новое изображение-заполнитель $newimage = imagecreatetruecolor(...) и введите текущее изображение. $image = imagecreatefromjpeg('whatever.jpg'), а затем вы можете использовать imagecopyresampled(), чтобы изменить размер, или любое количество других встроенных не -imagemagickкоманд

31
Andrew

Вы также можете получить количество страниц, используя

$im->getNumberImages();

Затем вы можете создавать большие пальцы всех страниц, используя цикл, например.

'file.pdf['.$x.']'
30
Jason

Используйте расширение php Imagick . Для управления желаемым размером выходного растрового изображения используйте функция setResolution

<?php    
$im = new Imagick();
$im->setResolution(300, 300);     //set the resolution of the resulting jpg
$im->readImage('file.pdf[0]');    //[0] for the first page
$im->setImageFormat('jpg');
header('Content-Type: image/jpeg');
echo $im;
?>

(Расширение Паоло Бергантино, его ответ, и Луиса Мелгратти, его комментарий. Вам нужно установить разрешение перед загрузкой изображения.)

14
Sebastian

Если вы загружаете PDF из большого двоичного объекта, вы получаете первую страницу вместо последней:

$im->readimageblob($blob);
$im->setiteratorindex(0);
11
jrjohnson

Вы также можете попробовать запустить утилиту 'convert', которая поставляется с imagemagick.

exec("convert pdf_doc.pdf image.jpg");
echo 'image-0.jpg';
8
Preet Sandhu

Я являюсь автором PDFlib оболочки GhostScript для php, преимущество использования этой библиотеки в том, что она уже протестирована и не требует ImageMagic

Всегда команды GhostScript быстрее, чем ImageMagic, когда дело доходит до pdf, поэтому вам следует использовать либо оболочку GhostScript, либо чистые команды GhostScript

$pdflib = new ImalH\PDFLib\PDFLib();
$pdflib->setPdfPath($pdf_file_path);
$pdflib->setOutputPath($folder_path_for_images);
$pdflib->convert();
3
imal hasaranga perera

Я установил готово! Это сработало!

Вы можете сделать base установить imagemagick на окнах.

В php (local) используйте вызов exec(<command line>) ex:

<?php
$pdf = "filename.pdf";
$info = pathinfo($pdf);
$file_name =  basename($pdf,'.'.$info['extension']);
echo $file_name;
$pdf = "filename.pdf[0]";
exec("convert $pdf convert-img/$file_name.jpg");    
?>

Кроме того, вы можете использовать class imagick в класс PHP Imagick

Спасибо, все помогли мне!

3
Duy Khanh

Подумайте иначе: вы можете использовать следующую библиотеку для преобразования pdf в изображение, используя javascript

http://usefulangle.com/post/24/pdf-to-jpeg-png-with-pdfjs

1
jewelhuq

Вот простой класс, который я написал и использовал для нескольких проектов. Он просто оборачивает imagick и обрабатывает запись каждой страницы на диск. Если кто-то все еще ищет простой способ сделать это, эта ссылка может быть полезным.

1
user664995