파이썬의 PyPDF2 라이브러리를 사용하여 PDF 파일을 쉽게 병합하고 분할할 수 있습니다. PyPDF2는 PDF 파일 조작을 위한 강력한 기능을 제공하며, 설치는 pip install PyPDF2 명령어로 간단히 할 수 있습니다.
PDF병합과 분할 노트북 파일
코드 스니펫
코드 설명은 관련 학습노트가 완성되면 추가하고, 필요한 학습 페이지도 함께 연결하도록 하겠습니다.
필요한라이브러리
pip install PyPDF2
pip install natsort
1. PDF병합 코드
import os
import PyPDF2
import natsort
import datetime
def mergePdfFiles(directoryPath=None):
# PDF 파일 목록 가져오기
if directoryPath is None:
directoryPath = os.getcwd()
pdfFiles = [file for file in os.listdir(directoryPath) if file.endswith('.pdf')]
pdfFiles = natsort.natsorted(pdfFiles)
# PDF 병합 준비
pdfWriter = PyPDF2.PdfWriter()
for pdfFile in pdfFiles:
filePath = os.path.join(directoryPath, pdfFile)
with open(filePath, 'rb') as file:
pdfReader = PyPDF2.PdfReader(file) # PdfFileReader -> PdfReader로 변경
for pageNum in range(len(pdfReader.pages)):
pdfWriter.add_page(pdfReader.pages[pageNum])
# 병합된 파일 저장할 폴더 생성
now = datetime.datetime.now()
folderName = f"{now.year}{now.month:02d}{now.day:02d}_{now.hour:02d}시{now.minute:02d}분{now.second:02d}초_PDF병합"
folderPath = os.path.join(directoryPath, folderName)
os.makedirs(folderPath, exist_ok=True)
# 병합 파일 저장
outputFilePath = os.path.join(folderPath, 'merged.pdf')
with open(outputFilePath, 'wb') as outputFile:
pdfWriter.write(outputFile)
print(f"PDF 병합 완료: {outputFilePath}")
mergePdfFiles()
Python
복사
2. PDF분할 코드
import os
import PyPDF2
import datetime
def splitPdfFiles(directoryPath=None):
# PDF 파일 목록 가져오기
if directoryPath is None:
directoryPath = os.getcwd()
pdfFiles = [file for file in os.listdir(directoryPath) if file.endswith('.pdf')]
# PDF 분할 처리
now = datetime.datetime.now()
folderName = f"{now.year}{now.month:02d}{now.day:02d}_{now.hour:02d}시{now.minute:02d}분{now.second:02d}초_PDF분할"
folderPath = os.path.join(directoryPath, folderName)
os.makedirs(folderPath, exist_ok=True)
for pdfFile in pdfFiles:
fileName = os.path.splitext(pdfFile)[0]
filePath = os.path.join(directoryPath, pdfFile)
try:
with open(filePath, 'rb') as file:
pdfReader = PyPDF2.PdfReader(file)
for pageIndex in range(len(pdfReader.pages)):
pdfWriter = PyPDF2.PdfWriter()
pdfWriter.add_page(pdfReader.pages[pageIndex])
outputFileName = f"{fileName}_page{pageIndex + 1}.pdf"
outputFilePath = os.path.join(folderPath, outputFileName)
with open(outputFilePath, 'wb') as outputFile:
pdfWriter.write(outputFile)
except PyPDF2.errors.PdfReadError:
print(f"{pdfFile}은(는) 손상되었거나 잘못된 형식의 PDF입니다. 처리할 수 없습니다.")
print(f"PDF 분할 완료: {folderPath}")
splitPdfFiles()
Python
복사