PDF 문서의 일부 페이지 병합

PDF 문서의 일부 페이지 병합

일부 내용이 2페이지로 분할된 PDF가 있습니다.

첫 번째 부분은 첫 번째 페이지의 아래쪽 절반보다 작거나 같고, 두 번째 부분은 두 번째 페이지의 위쪽 절반보다 작습니다. 예를 들어, x첫 번째 페이지에서는 원하는 내용 y이고 두 번째 페이지에서는 원하는 내용인 경우 -출력 문서에서는 원하지 않는 내용입니다.

|-|  |y|
|-|  |y|
|-|  |-|
|x|  |-|
|x|  |-|

나는 원해요

|x|
|x|
|y|
|y|

한 페이지에.

Linux에서 이런 방식으로 부분을 병합할 수 있습니까?

답변1

나는 당신이 원하는 것을 달성하기 위해 이 스크립트를 조정할 수 있어야 한다고 믿습니다.

사용하는 것이 약간 실용적입니다.

  • 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

관련 정보