pdf 파일 한장씩 쪼개서 저장하기
스캔
오늘 회사에서 서류를 여러장 스캔하는데, 각각 페이지마다 다른 곳으로 메일을 발송해야하는 일이었다. 스캔을 하고 보니, 한개의 파일로 바인딩이 되어있어서, acrobat으로 작업을 할까 하다가, 그냥 chatgpt 시켜서 스크립트를 짰더니, 음… 뭐 나쁘지 않다.
pypdf
뭔들 없겠느냐만, python 패키지는 찾는것도 일이다. AI덕분에 이제는 그냥 생각만 해도 되니 꽤나 편하다.
당장 써야하는 관계로 설계랄 것 없이 바로 돌릴 수 있는 형태로 만들었다.
여러 페이지의 pdf를 각 페이지 기준으로 저장
내가 써먹을 스크립트이다. 뭐 향후 사용을 위해 생각을 하자만 한도 끝도 없지만, 일단 필요한 건 바로 쓰기 편한 형태로 간다.
from pypdf import PdfReader, PdfWriter
import os
input_pdf = "1.pdf"
output_dir = "split_pages"
os.makedirs(output_dir, exist_ok=True)
reader = PdfReader(input_pdf)
for i, page in enumerate(reader.pages, start=1):
writer = PdfWriter()
writer.add_page(page)
output_file = os.path.join(
output_dir,
f"page_{i:03d}.pdf"
)
with open(output_file, "wb") as f:
writer.write(f)
print(f"완료: 총 {len(reader.pages)} 페이지 분리")
합치기
분리를 하다보면 또 붙이는게 아쉬우니, 하는김에 같이 해둔다.
from pypdf import PdfWriter
files = [
"01_표지.pdf",
"02_본문.pdf",
"03_첨부.pdf",
]
writer = PdfWriter()
for file in files:
writer.append(file)
with open("merged.pdf", "wb") as f:
writer.write(f)
jpg를 pdf로 변환
그냥 pdf로 출력(print) 하면 되지만, 그마저도 귀찮다.
from PIL import Image
imgname = "계획"
image = Image.open(imgname + ".jpg")
image = image.convert("RGB")
image.save(imgname + ".pdf")
print("완료")
결론
프론트 엔드를 붙여서 여러형태의 작업을 자유자재로 하는 것도 생각해봤으나, 그게 무슨 의미인가. 그냥 그때 그때 AI로 만드는게 더 빠를 수 있다.
그런데 왜 이 코드를 블로그에 적고 있는 거지?
끝.