이 페이지의 이전 버전을 보고 있습니다. 현재 버전 보기.

현재와 비교 페이지 이력 보기

버전 1 다음 »

문서 취합 및 쪽번호 매기기 자동화

enscript와 pdftk로 PDF의 머릿글과 페이지 번호를 추가하기

예제 문서

4개의 제안서를 받아 평가용 책자를 만드는 예제

제안서 PDF에 평가용 코드를 헤더로 넣기 → PDF 병합 → 쪽번호 추가

파일평가용 코드
(제안서별 머릿글)

RFP-AS-01-AAA.pdf2020-AS-01


번호
추가

RFP-AS-02-BBB.pdf2020-AS-02
RFP-CW-01-CCC.pdf2020-CW-01
RFP-CW-02-DDD.pdf2020-CW-02


enscript용 템플릿 추가

~/.enscript/footer.hdr
% -- code follows this line --
%Format: fmodstr    $D{%a %b %d %H:%M:%S %Y}
%Format: pagenumstr $V$%

%HeaderHeight: 38
%FooterHeight: 15

/do_header {   % print default simple header

  % Footer
  gsave
    d_footer_x d_footer_y HFpt_h 3 div add translate
    HF setfont

    user_footer_p {
      d_footer_x  d_footer_y moveto user_footer_left_str show

      d_footer_w user_footer_center_str stringwidth pop sub 2 div
      0 moveto user_footer_center_str show

      d_footer_x d_footer_w add user_footer_right_str stringwidth pop sub
      d_footer_y moveto user_footer_right_str show
    } if
  grestore

  % Header
  gsave
    d_header_x d_header_y HFpt_h 3 div add translate
    HF setfont

    user_header_p {
      5 0 moveto user_header_left_str show

      d_header_w user_header_center_str stringwidth pop sub 2 div
      0 moveto user_header_center_str show

      d_header_w user_header_right_str stringwidth pop sub 5 sub
      0 moveto user_header_right_str show
    } {
      5 0 moveto fname show
      45 0 rmoveto fmodstr show
      45 0 rmoveto pagenumstr show
    } ifelse
  grestore

} def

스크립트 준비

add-header.sh
INPUT=$1
HEADER=$2

echo IN  : $INPUT
echo OUT : $HEADER.pdf

pdftk $INPUT output tmp.pdf
number_of_pages=$(pdftk tmp.pdf dump_data | grep NumberOfPages | sed 's/NumberOfPages: //g')

(for i in $(seq $number_of_pages); do echo; done) | \
enscript -F Times-Roman20 --fancy-header=footer -L1 -b"|$HEADER|" --footer '||' -o- | \
ps2pdf - | \
pdftk "tmp.pdf" multistamp - output "$HEADER.pdf"

rm tmp.pdf


add-pagenum.sh
INPUT=$1
OUTPUT=$(echo $1 | sed 's/.pdf$//g')-numbered.pdf

echo IN  : $INPUT
echo OUT : $OUTPUT

pdftk $INPUT output tmp.pdf
number_of_pages=$(pdftk tmp.pdf dump_data | grep NumberOfPages | sed 's/NumberOfPages: //g')

(for i in $(seq $number_of_pages); do echo; done) | \
enscript -F Times-Roman12 --fancy-header=footer -L1 -b"||" --footer '|$%|' -o- | \
ps2pdf - | \
pdftk "tmp.pdf" multistamp - output "$OUTPUT"

rm tmp.pdf


스크립트 실행

$ ./add-header.sh RFP-AS-01-AAA.pdf "2020-AS-01"
OUT : 2020-AS-01.pdf

$ ./add-header.sh RFP-AS-02-BBB.pdf "2020-AS-02"
OUT : 2020-AS-02.pdf

$ ./add-header.sh RFP-CW-01-CCC.pdf "2020-CW-01"
OUT : 2020-CW-01.pdf

$ ./add-header.sh RFP-AS-02-DDD.pdf "2020-CW-02"
OUT : 2020-CW-02.pdf

$ pdftk `ls 2020-AS-*.pdf |sort` cat output RFP-AS.pdf
$ pdftk `ls 2020-CW-*.pdf |sort` cat output RFP-AS.pdf
$ pdftk RFP-AS.pdf RFP-CW.pdf cat output RFP.pdf

$ ./add-pagenum.sh RFP.pdf
OUT : RFP-numbered.pdf


참고

https://anaraven.bitbucket.io/blog/2018/numbering-pages-of-a-pdf.html

https://www.maketecheasier.com/combine-multiple-pdf-files-with-pdftk/

  • 레이블 없음