스캔

오늘 회사에서 서류를 여러장 스캔하는데, 각각 페이지마다 다른 곳으로 메일을 발송해야하는 일이었다. 스캔을 하고 보니, 한개의 파일로 바인딩이 되어있어서, 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로 만드는게 더 빠를 수 있다.

그런데 왜 이 코드를 블로그에 적고 있는 거지?

끝.