북 스캐너, 어떻게 보면 진짜 쓸모없는 기계지만 때로는 정말 가지고 싶다라는 생각이 드는 장비이다. 하지만… 이 장비 가격이란게 보통을 넘는 수준이기 때문에 이걸 어떻게 만들 수 없을까 하다가 문득 떠오른 생각은…
어차피 북 스캐너를 사고 싶어하는 이유는 양면 스캔 때문인데… 그냥 단면 스캔을 하나의 파일로 합칠 수 있으면 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를 이용하여 구현하였다. 동작방식도 심플해서… 뭐… 잘 된다.
그럼… 이제 복합기를 한 대 사볼까?