首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PDF转JPG Imagic页面选择

PDF转JPG Imagic页面选择
EN

Stack Overflow用户
提问于 2012-06-20 15:26:20
回答 4查看 4.1K关注 0票数 2

大量关于如何在命令行中执行此操作的答案

代码语言:javascript
复制
convert /path/to/file/file.pdf[3] output.jpg

很好..。但是如果我在内存处理中使用,我正在用PDFlib生成PDF,然后输出它的缓冲区到一个函数,我想要生成所选页面的jpg预览。多么?我的代码:

代码语言:javascript
复制
    [...]
    $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;

这将创建一个jpeg,但始终返回PDF的最后一页。我希望能够选择哪一个将被转换。在不保存临时文件和使用命令行(exec('convert /path/to/file/file.pdf[3] output.jpg'))语法的情况下可行吗?

让我补充一句,我试过

代码语言:javascript
复制
    $im->readimageblob($buf[2]);

但它不起作用:)

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2012-06-27 20:30:59

不幸的是,这不是一个好消息,但我可以肯定地说,在撰写本文时,ImageMagick (和PHP库)不支持您试图使用的页面表示法。(对于未来的人来说:我正在检查php-imagick-3.0.1和imagemagick-6.6.0.4)。

我正在尝试做与您完全相同的事情,我刚刚花了几个小时在源代码中搜索,试图弄清楚它是做什么的,以及它是如何获得页面的,它看起来根本不会在从流中读取时使用它(即,.readBlob()调用)。

因此,我将把它放在一个临时文件中,并从那里读取它。不是很优雅,但它会工作的。

票数 1
EN

Stack Overflow用户

发布于 2014-03-27 05:46:01

对于那些还在寻找从blob中读取特定页码的解决方案的人,请查看此问题Creating array populated by images from a PDF using PHP and ImageMagick

代码语言:javascript
复制
$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();
票数 5
EN

Stack Overflow用户

发布于 2018-05-26 12:05:50

我将PDF二进制文件从亚马逊S3加载到内存中,然后使用setIteratorIndex()选择我想要的特定页面,然后使用getImage()

代码语言:javascript
复制
function get_image_from_pdf($pdf_bytes, $page_num){
    $im = new \Imagick();
    $im->setResolution(150, 150);
    $im->readImageBlob($pdf_bytes);
    $im->setIteratorIndex($page_num);
    $im = $im->getImage();
    $im->setImageFormat('png');
    return $im->getImageBlob();
}
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11114747

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档