Python, PDF 결합하기

2019-09-06 17:40:57

북 스캐너, 어떻게 보면 진짜 쓸모없는 기계지만 때로는 정말 가지고 싶다라는 생각이 드는 장비이다. 하지만... 이 장비 가격이란게 보통을 넘는 수준이기 때문에 이걸 어떻게 만들 수 없을까 하다가 문득 떠오른 생각은...

어차피 북 스캐너를 사고 싶어하는 이유는 양면 스캔 때문인데... 그냥 단면 스캔을 하나의 파일로 합칠 수 있으면 OK 아닌가?

그래서... 단면 스캐너도 없지만... 급히 테스트 코드를 작성해보았다.

import PyPDF2 as pdf
import os, sys, glob

root_dir = sys.argv[1]

pdf_list = glob.glob(root_dir + "/*.pdf")

pdf_list.sort()

if len(pdf_list) != 2:
    print "only combine two pdf."
    sys.exit(1)


merge_structure = []
merge_structure.append( [False, None] )
merge_structure.append( [False, None] )


merge_structure[0][1] = pdf.PdfFileReader(open(pdf_list[0], "rb"))
merge_structure[1][1] = pdf.PdfFileReader(open(pdf_list[1], "rb"))
ow = pdf.PdfFileWriter()


n_page = 0

while True:
    for item in merge_structure:
        if not item[0]:
            try: ow.addPage(item[1].getPage(n_page))
            except: item[0] = True
    if merge_structure[0][0] and merge_structure[1][0]:
        break
    n_page += 1

with file(root_dir + "/merged.pdf", "wb") as outfp:
    ow.write(outfp)

print "done"

코드 내용은 심플하다. PDF 파일 두 개를 한 페이지씩 반복적으로 넣어서 하나의 PDF를 만드는 코드다. Python과 PyPDF2를 이용하여 구현하였다. 동작방식도 심플해서... 뭐... 잘 된다.

그럼... 이제 복합기를 한 대 사볼까?