Pdf
合併 PDF 文件的部分頁面
我有一個 PDF,其中一些內容分成 2 頁。
第一部分佔用小於或等於第一頁的下半部分,第二部分佔用小於第二頁的上半部分。例如,如果
x
是第一頁上y
的所需內容,並且是第二頁上的所需內容,並且-
是我不想出現在我們擁有的輸出文件中的內容:|-| |y| |-| |y| |-| |-| |x| |-| |x| |-|
我想擁有
|x| |x| |y| |y|
在一頁上。
是否可以在 Linux 上以這種方式合併這些部分?
相信你應該能夠調整這個腳本來做你想做的事:
使用它有點實用:
- pdfinfo - 獲取尺寸。
- gs - 從頁面中提取框。
- pdftk - 整理成一個 PDF。
- pdfjam - 生成 2 頁中的 1 頁。
到目前為止,它適用於從頂部/底部提取的相同尺寸。(目前硬編碼為 offs=50 AKA 50%)。通過一些調整,您應該能夠使其工作在例如 70% - 30% 或其他任何情況下。
pdf50x50
:#!/bin/bash if ! [ -r "$1" ]; then printf "Unable to read file \`%s'\n" "$1" >&2 exit 1 fi fn_in="$1" # A (debug) counter for "temp" files. # NOTE: Printing to file .pdftestnr in working directory fn_nr=.pdftestnr [ -r $fn_nr ] && nr=$(<$fn_nr) || nr=0 ((++nr)) printf %d $nr > $fn_nr # File names. fn_top=$(printf "top-%03d.pdf" $nr) fn_bottom=$(printf "bottom-%03d.pdf" $nr) fn_combi=$(printf "combi-%03d.pdf" $nr) fn_fine=$(printf "fine-%03d.pdf" $nr) # Get dimensions read -r p w h <<<$(pdfinfo $fn_in | awk '/^Pages:/{print $2}/^Page size/{print $3, $5}') # Calculate pixel dimensions (might fail.) ((pix_w = w * 10)) ((pix_h = h * 10)) printf "Size %dx%d pts of %d pages\n" $w $h $p # Percent offs=50 ((offs = h * offs / 100)) ((pix_crop_h = pix_h - offs * 10 )) echo $pix_crop_h $offs # Extract top box to own pdf. gs \ -o $fn_top \ -sDEVICE=pdfwrite \ -g${pix_w}x$pix_crop_h \ -c "<</PageOffset [0 -$offs]>> setpagedevice" \ -f $fn_in # Extract bottom box to own pdf. gs \ -o $fn_bottom \ -sDEVICE=pdfwrite \ -g${pix_w}x$pix_crop_h \ -c "<</PageOffset [0 0]>> setpagedevice" \ -f $fn_in # Combine top and bottom files to one file. pdftk \ A=$fn_top \ B=$fn_bottom \ cat A1 B2 \ output $fn_combi \ verbose # Combine 2 pages to one. pdfjam $fn_combi --nup 1x2 --outfile $fn_fine