파이썬, PDF 파일 페이지 분리 저장, PDF 파일 병합
[참조] https://compmath.korea.ac.kr/python/UsefulModules.html
[참조] https://www.blog.pythonlibrary.org/2018/04/11/splitting-and-merging-pdfs-with-python/
글. 수알치 오상문
소스코드에 나오는 링크를 참조했다.
다만, 예전 버전이다보니 모듈이 업그레이드 되면서 명칭이 바뀐 부분이 있어서 그 부분을 수정했다.
[ PDF 파일 페이지를 분리 저장하는 예제 ]
# pdf_splitter.py
#
# python.exe -m pip install --upgrade pip <-- 관리자 권한 파워쉘로 진입 후 실행
# pip install pypdf2
# conda install -c conda-forge pypdf2
import os
from PyPDF2 import PdfReader, PdfWriter # OLD : PdfFileReader, PdfFileWriter
def pdf_splitter(path):
fname = os.path.splitext(os.path.basename(path))[0]
pdf = PdfReader(path)
for page_num in range(len(pdf.pages)): # OLD : range(pdf.getNumPages())
pdf_writer = PdfWriter()
pdf_writer.add_page(pdf.pages[page_num]) # OLD: addPage(pdf.getPage(page_num))
output_filename = '{}_page_{}.pdf'.format( fname, page_num+1)
with open(output_filename, 'wb') as out:
pdf_writer.write(out)
print('Created: {}'.format(output_filename))
if __name__ == '__main__':
filename = 'test.pdf' # 읽어올 파일
pdf_splitter(filename)
[실행 결과] 분리된 페이지가 각각 PDF 파일로 저장되었다.
위에서 분리한 PDF 파일을 합쳐서 하나의 PDF 파일로 만드는 예제는 다음과 같다.
[ PDF 파일들을 합치는 예제 1] 이 예제보다는 아래 2번 예제가 깔끔하다.
# pdf_merger.py
#
# python.exe -m pip install --upgrade pip <-- 관리자 권한 파워쉘로 진입 후 실행
# pip install pypdf2
# conda install -c conda-forge pypdf2
#
# update : 2023.03.11 sangmun oh (sualchi)
from PyPDF2 import PdfReader, PdfWriter # OLD : PdfFileReader, PdfFileWriter
def pdf_merge(output_path, input_paths):
pdf_writer = PdfWriter()
for path in input_paths:
pdf_reader = PdfReader(path) # OLD : PdfFileReader
for page_num in range(len(pdf_reader.pages)): # OLD : range(pdf.getNumPages())
pdf_writer.add_page(pdf_reader.pages[page_num]) # OLD: addPage(pdf.getPage(page_num)):
with open(output_path, 'wb') as fh:
pdf_writer.write(fh)
if __name__ == '__main__':
paths = [
'test_page_1.pdf',
'test_page_2.pdf',
'test_page_3.pdf',
'test_page_4.pdf',
'test_page_5.pdf',
]
pdf_merge('pdf_merge.pdf', paths)
[실행 결과] 합쳐진 PDF 파일이 생성되었다.
[ PDF 파일들을 합치는 예제 2] 합치는 기능을 이용하므로 깔끔해졌다.
# pdf_merger2.py
#
# python.exe -m pip install --upgrade pip <-- 관리자 권한 파워쉘로 진입 후 실행
# pip install pypdf2
# conda install -c conda-forge pypdf2
#
# update : 2023.03.11 sangmun oh (sualchi)
import glob
from PyPDF2 import PdfMerger # OLD : PdfFileMerger
def merger(output_path, input_paths):
pdf_merger = PdfMerger()
file_handles = []
for path in input_paths:
pdf_merger.append(path)
with open(output_path, 'wb') as fileobj:
pdf_merger.write(fileobj)
if __name__ == '__main__':
paths = glob.glob('test_page_*.pdf')
paths.sort()
merger('pdf_merge2.pdf', paths)
[실행 결과] 합쳐진 PDF 파일이 생성되었다.
'Python 활용' 카테고리의 다른 글
파이썬, FPDF로 PDF 파일 저장하는 예제 (0) | 2023.03.12 |
---|---|
미친 파이썬 프레임워크가 나타났다. Pynecone (0) | 2023.03.11 |
파이썬, 대용량 이진 파일에서 여러 개 패턴 데이터를 검색하는 예제 (0) | 2023.03.08 |
파이썬, 이미지 파일과 base64 문자열 변환 예제 (0) | 2023.02.25 |
파이썬, 에코 서버/클라이언트 예제 (0) | 2023.02.17 |