Pdf

合併 PDF 文件的部分頁面

  • February 2, 2015

我有一個 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

引用自:https://unix.stackexchange.com/questions/182485