将PDF文档的一部分呈现为图像文件需要哪些库、扩展等?

我发现大多数PHP PDF库都围绕着创建PDF文档,但是是否有一种简单的方法可以将文档渲染成适合web使用的图像格式呢?

我们的环境是一个LAMP堆栈。


当前回答

你需要ImageMagick和GhostScript

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

[0]表示第一页。

其他回答

你需要ImageMagick和GhostScript

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

[0]表示第一页。

您还可以使用

$im->getNumberImages();

然后你可以创建拇指的所有页面使用循环,例如。

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

你也可以尝试执行imagemagick附带的“convert”实用程序。

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

我是PDFlib的作者,这是一个php的GhostScript包装器,使用这个库的优点是,它已经经过测试,它不需要ImageMagic

当涉及到pdf时,GhostScript命令总是比ImageMagic快,所以你应该要么使用GhostScript包装器,要么使用纯GhostScript命令

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

对于那些由于某种原因没有ImageMagick的人,GD函数也可以与GhostScript一起工作。使用exec()运行ghostscript命令将PDF转换为JPG,并使用imagecreatefromjpeg()操作生成的文件。

执行ghostscript命令:

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

要操作,创建一个新的占位符图像,$newimage = imagecreatetruecololor(…),并引入当前图像。$image = imagecreatefromjpeg('whatever.jpg'),然后你可以使用imagecopyresampled()来改变大小,或任何其他内置的,非imagemagick命令