Ran*_*ash 2 php pdf imagemagick image-processing imagick
关于如何为命令行执行此操作的大量答案
convert /path/to/file/file.pdf[3] output.jpg
Run Code Online (Sandbox Code Playgroud)
很好...但是如果我在内存处理中使用,我会用 PDFlib 生成 PDF,然后将其缓冲区输出到我想要生成所选页面的 jpg 预览的函数。如何?我的代码:
[...]
$buf = $pdf->get_buffer();
//$buff is just a PDF stored in a string now.
$im = new Imagick();
$im->readimageblob($buf);
$im->setImageFormat("jpg");
$im->setimagecompressionquality(60);
$len = strlen($im);
header("Content-type: image/jpeg");
header("Content-Length: $len");
header("Content-Disposition: inline; filename=test.jpg");
echo $im;
Run Code Online (Sandbox Code Playgroud)
这将创建一个 jpeg,但始终返回 PDF 的最后一页。我希望能够选择要转换哪一个。不保存临时文件和使用命令行(exec('convert /path/to/file/file.pdf[3] output.jpg'))语法是否可行?
让我补充一下,我试过
$im->readimageblob($buf[2]);
Run Code Online (Sandbox Code Playgroud)
它没有用:)
小智 5
对于仍在寻找从 blob 读取特定页码的解决方案的人,请检查此问题使用 PHP 和 ImageMagick 创建由 PDF 中的图像填充的数组
$img_array = array();
$im = new imagick();
$im->setResolution(150,150);
$im->readImageBlob($pdf_in);
$num_pages = $im->getNumberImages();
for($i = 0;$i < $num_pages; $i++)
{
$im->setIteratorIndex($i);
$im->setImageFormat('jpeg');
$img_array[$i] = $im->getImageBlob();
}
$im->destroy();
Run Code Online (Sandbox Code Playgroud)