【问题标题】:Make thumbnail of multiple pages from PDF wiith imagemagick使用 imagemagick 从 PDF 制作多个页面的缩略图
【发布时间】:2014-09-12 22:24:04
【问题描述】:

我研究了如何从单页 PDF 中制作精美的缩略图。但正如我下面的代码所示,我可以为 2 页以上的 PDF 做的最好的事情是选择做第一页:

$w=320;$h=240;
$fname="my.pdf";
$saveFname = "mypdf.jpg";

$im = new \imagick($fname);
if($im->getNumberImages()>=2){
    $im->setiteratorindex(0);   //Just do first page
    }
$im->thumbnailImage($w,$h,/*bestfit=*/true,/*fill=*/true);
$im->writeImage($saveFname);

我想做的是将第 1 页和第 2 页并排放置,并充分利用可用空间。 (如果可以选择对所有页面或选定页面进行平铺,那就更好了。)

我认为montageImage 可能是答案,但我找不到完整的示例,因此无法确定如何指定要处理的 PDF 页面。

以上清单注意事项:

  • thumbnailImage 的第三个参数表示保持原图的纵横比
  • 第 4 个参数表示两侧的填充(白色),因此图像仍然是 $w x $h 像素
  • 您可以将 [n] 附加到 $fname 以仅加载第 n 页(从零开始计数)(例如,“my.pdf[0]”制作第一页的缩略图)。
  • 默认情况下,它将处理多页 PDF 的最后一页,因此需要setiteratorindex() 来选择要处理的页面。

【问题讨论】:

    标签: php pdf imagemagick thumbnails


    【解决方案1】:

    修改版

    这可能更简单地做你想做的事!

    montage -density 288 input.pdf[0,1] -resize 50% -mode Concatenate -tile 2x thumb.jpg
    

    原始解决方案

    我不确定您将如何在 php 中执行此操作,但这里有一个脚本可以在 ImageMagick 的命令行中执行我认为您想要的操作:

    #!/bin/bash
    PDF=$1
    TMPA="TMPA-$$.JPG"
    TMPB="TMPB-$$.JPG"
    out=1
    #
    # Get number of pages in PDF
    NUMPAGES=$(identify "$PDF" | wc -l)
    echo $PDF has $NUMPAGES pages
    #
    # Iterate over all pages, two at a time
    for ((p=0;p<$NUMPAGES;))
    do
        convert -density 288 a.pdf[$p] -alpha remove -resize 50% "$TMPA"
        ((p++))
        convert -density 288 a.pdf[$p] -alpha remove -resize 50% "$TMPB"
        ((p++))
        convert +append "$TMPA" "$TMPB" thumb${out}.jpg
        ((out++))
        rm "$TMPA" "$TMPB" 2> /dev/null
    done
    

    另存为thumbnailer 并像这样使用:

    chmod +x thumbnailer
    ./thumbnailer xyz.pdf
    

    它以缩略图文件thumb{1..n/2}.jpg 的形式生成 PDF 的“双拼”输出

    希望那里有一些关于使用什么参数以及在 `php 中调用什么函数的提示。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-11-28
      • 1970-01-01
      • 1970-01-01
      • 2013-10-11
      相关资源
      最近更新 更多