728x90
반응형
pdf 파일에서 페이지를 삭제하거나 PDF를 합병하고 싶을 때 다음 코드를 사용해서 돌리면 pdf파일을 내 맘대로 수정할 수 있다.
아래 코드는 한 부당 7페이지로 구성된 40부짜리 문서 중 앞에 있는 3부만 잘라내어 저장하는 스크립트다.
import PyPDF2
if __name__ == "__main__":
# target_path : pdf 문서가 있는 경로
target_path = "./문서_40부.pdf"
pdf = PyPDF2.PdfReader(target_path)
output = PyPDF2.PdfWriter()
pageNum = len(pdf.pages)
oneDoc = 7 # 한 부당 페이지 개수
for i in range(0, 3*oneDoc):#처음에 있는 3부만 따로 저장
page = pdf.pages[i]
output.add_page(page)
output.write(open("./문서_3부.pdf", "wb"))
여러 pdf파일을 하나로 합치고 싶을땐 아래 코드를 사용.
import os
import glob
from PyPDF2 import PdfMerger
import natsort #이거는 그냥 내가 보는 순서대로 정렬하기 위한 package이므로 안깔아도 됨
if __name__ == "__main__":
# target_path : pdf 문서가 있는 경로
target_path = "./pdf_folder/*.pdf"
# 파일 list 가져와서 정렬.
file_list = glob.glob(target_path)
file_list = natsort.natsorted(file_list)
filemerger = PdfMerger()
for file in tqdm(file_list):
filemerger.append(file)
filemerger.write("./merge_3부.pdf")
filemerger.close()
참고로 natsort는 내가 보는대로 파일 리스트를 정렬하기 위함이고, glob은 안에 있는 파일을 탐색해서 list로 반환하는데 사용하는 패키지다.
본 패키지를 깔지 않고, os.walk나 sort함수로 간단하게 할 수도 있지만 코드를 그대로 사용하려면 아래 pip install로 설치하는 것을 권장한다.
# 본 코드는 PyPDF2를 3.0.x 이상 버전 사용함.
pip install PyPDF2==3.0.1
pip install glob
pip install natsort
728x90
반응형
'사소한 Tip . 오류 해결법 > python' 카테고리의 다른 글
[python/coco] 원하는 클래스만 필터링하여 사용하기(Filtering sub classes on COCO Json file) (2) | 2024.02.06 |
---|---|
[python/pickle] pickle data load/read, write (0) | 2024.01.22 |
[pandas / DataFrame] MultiIndex df.to_excel 저장 시 빈 행(row) 삭제하기 (0) | 2024.01.03 |
[python/PIL] image to pdf convert (0) | 2023.10.17 |
[PIL] 투명한 이미지 만들기(글자만 남기기) / transparent image / remove background (2) | 2023.10.11 |