반응형

안녕하세요.

 

오랜만에 파이썬 응용에 글을 쓰는 것 같습니다.

 

어제 급하게 교수님의 지시하에 책을 스캔떠서 복사했습니다.

 

아무래도 양도 양인 만큼 스캔을 한 페이지 한 페이지 뜨는 것이 너무 힘들어서 파이썬으로 꼼수 좀 사용했습니다. 

 

책 같은 경우는 양면으로 되있기 때문에 스캔을 뜨는 것이 굉장히 어렵습니다. 

 

연속으로 한 면만 스캔 뜰 수 있는 프린트입니다.

 

 20 - 81 page 라면,

 

앞 : 20, 22, 24, 26 ~ 76, 78, 80 Page

뒤 : 21, 23, 25, 27 ~ 77, 79, 81 Page

 

로 스캔을 뜬 후,  저장된 pdf를 각페이지를 교차해서 합쳤습니다. 

 

from PyPDF2 import PdfFileReader, PdfFileWriter
import os


# FIle name
base_path = os.getcwd()
file_name_1 = '앞.pdf'
file_name_2 = '뒤.pdf'
save_name = '교차.pdf'

# Path
file_path_1 = os.path.join(base_path, file_name_1)
file_path_2 = os.path.join(base_path, file_name_2)
save_path = os.path.join(base_path, save_name)
print(file_path_1)
print(file_path_2)
print(save_path)

# PDF Read
pdf_read_1 = PdfFileReader(open(file_path_1, 'rb'))
pdf_read_2 = PdfFileReader(open(file_path_2, 'rb'))

# PDF Write
pdf_writer = PdfFileWriter()

# Get number page
number_pages_1 = pdf_read_1.getNumPages()
number_pages_2 = pdf_read_2.getNumPages()
print(number_pages_1)
print(number_pages_2)

if number_pages_1 >= number_pages_2:
    stop_point = number_pages_2
else:
    stop_point = number_pages_1
# set up
i = 0

while(1):
    if stop_point == i:
        break
    pdf_writer.addPage(pdf_read_1.getPage(i))
    pdf_writer.addPage(pdf_read_2.getPage(i))
    i = i + 1

with open(save_path, 'wb') as f:
    pdf_writer.write(f)

급하게 코드를 짰지만, 동작은 잘 합니다. 

 

외부 라이브러리를 쉽게 불러올 수 있고, 코드 또한 굉장히 간단합니다. 

 

전공적인 부분이 아닌, 논리적인 연결을 시킬 수 있다면 누구나 할 수 접근할 수 있는 것이 파이썬의 강점입니다.

 

정말로 몇 년 뒤면 파이썬을 엑셀처럼 실무에서 사용하는 모습을 볼 수 있을 것 같습니다.

 

python -m pip install PyPDF2  # 설치
728x90
반응형

+ Recent posts