需要哪些库、扩展等来将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]
代表着第一页
。
$im->thumbnailImage(1500, 0);
这段代码,可以将你的 JPG 图片设置为宽度为 1500,并保持比例缩放。参见文档。 - Kevin Jantzer对于那些没有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 = imagecreatetruecolor(...)
,并引入当前图像。$image = imagecreatefromjpeg('whatever.jpg')
,然后可以使用imagecopyresampled()
来改变大小,或者使用任意数量内置的非imagemagick
命令。
gs
二进制文件的完整路径。 - cranedsomething;rm -rf /
的文件会怎样? - iProgram您还可以使用以下方式获取页面数:
$im->getNumberImages();
然后您可以使用循环创建所有页面的缩略图,例如:
'file.pdf['.$x.']'
使用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;
?>
(在Paolo Bergantino的回答和Luis Melgratti的评论上进行扩展。您需要在加载图像之前设置分辨率。)
$im->readimageblob($blob);
$im->setiteratorindex(0);
你也可以尝试执行随 Imagemagick 一起提供的 'convert' 工具。
exec("convert pdf_doc.pdf image.jpg");
echo 'image-0.jpg';
echo 'image-0.jpg';
返回一个字符串。 - suzImageMagic
。GhostScript
命令比ImageMagic
更快,因此您应该选择GhostScript包装器或纯GhostScript命令。$pdflib = new ImalH\PDFLib\PDFLib();
$pdflib->setPdfPath($pdf_file_path);
$pdflib->setOutputPath($folder_path_for_images);
$pdflib->convert();
$pdflib = new ImalH\PDFLib\PDFLib();
$pdflib->setPdfPath($pdf_file_path);
$pdflib->setOutputPath($folder_path_for_images);
$pdflib-
>setImageFormat(\ImalH\PDFLib\PDFLib::$IMAGE_FORMAT_PNG);
$pdflib->setDPI(100);
$pdflib->setPageRange(1,$pdflib->getNumberOfPages());
$pdflib->convert();
PDFlib是否有设置所创建PNG文件的宽度和高度的选项? - WGS有所不同,您可以使用以下库来使用JavaScript将PDF转换为图像:
我安装完成了!它可以正常工作!
你可能需要在Windows上执行基本的安装imagemagick。
在php(本地)
中使用调用exec(<command line>)
例如:
<?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
。感谢所有帮助我的人!imagick
并处理将每个页面写入磁盘的操作。如果有人仍在寻找一种简单的方法来实现这一点,这个链接可能会有所帮助。
.jpg
扩展名。我尝试了.htaccess
的AddHandler
方法,但它没有起作用。 - Keyslinger