안녕하세요.
오랜만에 파이썬 응용에 글을 쓰는 것 같습니다.
어제 급하게 교수님의 지시하에 책을 스캔떠서 복사했습니다.
아무래도 양도 양인 만큼 스캔을 한 페이지 한 페이지 뜨는 것이 너무 힘들어서 파이썬으로 꼼수 좀 사용했습니다.
책 같은 경우는 양면으로 되있기 때문에 스캔을 뜨는 것이 굉장히 어렵습니다.
연속으로 한 면만 스캔 뜰 수 있는 프린트입니다.
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
반응형
'Python > Application' 카테고리의 다른 글
[파이썬] Low, High, Band Pass filter를 이용한 신호 처리, FFT 변환으로 주파수 영역 확인. (2) | 2021.06.18 |
---|---|
[파이썬 응용] PDF 합치는 프로그램(2) (0) | 2020.07.22 |
[파이썬 응용] PDF 합치는 프로그램(1) (1) | 2020.07.20 |
[파이썬 응용] QT designer to python code ( .ui -> .py) UI파일을 파이썬 코드로 변환 (0) | 2020.07.14 |
[파이썬 실습] 파이썬으로 알아보는 신호 시간영역과 주파수 영역 (0) | 2020.06.13 |