문서 취합 및 쪽번호 매기기 자동화
enscript와 pdftk로 PDF의 머릿글과 페이지 번호를 추가하기
(주의) 한글(korean) 머릿글은 지원하지 않는다
HWP는 일괄병합 기능을 지원하지 않는다.
80개 제안서를 일일이 합치고 쪽번호를 매기는 작업은 심히 괴롭다.
PDF로 바꿔서 CLI로 작업하는게 정신건강에 이롭다.
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 |
% -- 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 number_of_pages=$(pdftk $INPUT dump_data | grep NumberOfPages | sed 's/NumberOfPages: //g') if [ $(($number_of_pages % 2)) -eq 1 ]; then pdftk $INPUT a4.pdf cat output tmp.pdf number_of_pages=$(($number_of_pages+1)) else pdftk $INPUT output tmp.pdf fi echo | \ enscript -F Times-Roman20 --fancy-header=footer -L1 -b"|$HEADER|" --footer '||' -o- | \ ps2pdfwr - > stamp.pdf pdftk tmp.pdf stamp stamp.pdf output "stamp-$INPUT" #rm tmp.pdf stamp.pdf |
INPUT=$1 OUTPUT=$(echo $1 | sed 's/.pdf$//g')-numbered.pdf echo IN : $INPUT echo OUT : $OUTPUT number_of_pages=$(pdftk $IN 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 - > stamp.pdf pdftk $IN multistamp stamp.pdf output $OUTPUT #rm stamp.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/