簡體   English   中英

使用PDF和magmag制作多頁的縮略圖

[英]Make thumbnail of multiple pages from PDF wiith imagemagick

我已經研究出如何從單頁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的第三個參數表示保持原始圖像的長寬比
  • 第四個參數表示兩邊都是白色的墊子(白色),因此圖像仍然是$ wx $ h像素
  • 您可以在$ fname后面附加[n]以僅加載第n頁(從零開始計數)(例如,“ my.pdf [0]”制作第一頁的縮略圖)。
  • 默認情況下,它將處理多頁PDF的最后一頁,因此需要setiteratorindex()來選擇要處理的頁面。

修改版本

這可能會更簡單地完成您想要的操作!

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中調用哪些函數。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM