이 페이지의 이전 버전을 보고 있습니다. 현재 버전 보기.
현재와 비교
페이지 이력 보기
버전 1
다음 »
문서 취합 및 쪽번호 매기기 자동화
enscript와 pdftk로 PDF의 머릿글과 페이지 번호를 추가하기
예제 문서
4개의 제안서를 받아 평가용 책자를 만드는 예제
제안서 PDF에 평가용 코드를 헤더로 넣기 → PDF 병합 → 쪽번호 추가
파일 | 평가용 코드 (제안서별 머릿글) |
|
---|
RFP-AS-01-AAA.pdf | 2020-AS-01 | 쪽 번호 추가 |
RFP-AS-02-BBB.pdf | 2020-AS-02 |
RFP-CW-01-CCC.pdf | 2020-CW-01 |
RFP-CW-02-DDD.pdf | 2020-CW-02 |
enscript용 템플릿 추가
% -- 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
스크립트 준비
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
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/