uniflow
KO / EN
Productivity·실행·2025-10-24

(2편) Spyder로 무료 PDF 편집하기 — 이미지 추출 · 이미지→PDF · PDF 병합

Spyder 설치가 완료되었다면 이제 실제로 PDF를 바로 만져볼 차례입니다. 이 글에서는 3가지 기능을 직접 실행하는 파이썬 코드를 제공합니다. 코드만 복사해 실행하면, PDF를 자유롭게 편집할 수 있습니다.

1)준비: 공용 경로 설정

Spyder를 여러 환경에서 쓸 때 경로를 일관되게 관리하기 위한 설정입니다.

from pathlib import Path
import platform

# 루트 폴더
PROJECT_ROOT = Path.home() / "uniflow" / "pdf-tools"

INPUT_DIR = PROJECT_ROOT / "inputs"
OUTPUT_DIR = PROJECT_ROOT / "outputs"
OUTPUT_DIR.mkdir(parents=True, exist_ok=True)

# Poppler 경로 설정
if platform.system() == "Windows":
    POPPLER_BIN = r"C:\tools\poppler\Library\bin"
else:
    POPPLER_BIN = None

2) PDF -> 이미지 저장 (pdf2image)

from pdf2image import convert_from_path

pdf_name = "document_sample.pdf"
pdf_path = INPUT_DIR / pdf_name
basename = pdf_path.stem

pages = convert_from_path(str(pdf_path), dpi=300, poppler_path=POPPLER_BIN)

for i, page in enumerate(pages, start=1):
    out_path = OUTPUT_DIR / f"{basename}_page_{i}.png"
    page.save(out_path, "PNG")
    print("저장 완료:", out_path)

활용 예시

  • 문서 일부만 이미지로 추출해서 메신저나 보고서에 첨부
  • 전자서명/도장 이미지 편집용으로 활용

3) 이미지 -> PDF로 변환 (Pillow)

from PIL import Image
import os

image_prefix = "document_sample_page_"
image_dir = OUTPUT_DIR
output_pdf = OUTPUT_DIR / f"{image_prefix}merged.pdf"

images = []
for file in sorted(os.listdir(image_dir)):
    if file.startswith(image_prefix) and file.endswith(".png"):
        img_path = os.path.join(image_dir, file)
        img = Image.open(img_path).convert("RGB")
        images.append(img)

if images:
    images[0].save(output_pdf, save_all=True, append_images=images[1:])
    print("PDF 저장 완료:", output_pdf)
else:
    print("변환할 이미지가 없습니다.")

4) 여러 PDF를 하나로 병합 (PyPDF2)

from PyPDF2 import PdfMerger
import os

pdf_dir = INPUT_DIR
output_pdf = OUTPUT_DIR / "merged_all.pdf"

merger = PdfMerger()

for file in sorted(os.listdir(pdf_dir)):
    if file.endswith(".pdf"):
        file_path = os.path.join(pdf_dir, file)
        merger.append(file_path)
        print("추가:", file_path)

merger.write(output_pdf)
merger.close()

print("PDF 병합 완료:", output_pdf)

활용 예시

  • 부서별 문서 합본, 월별 보고서 통합
  • 여러 계약서/첨부파일을 한 파일로 병합

문제 해결 Q&A

  • ModuleNotFoundError: pip install pdf2image pillow PyPDF2 다시 실행
  • Poppler 경로 오류: Windows의 경우 …/bin 까지 정확히 지정
  • 한글 파일명 깨짐: 영문 파일명 또는 Path 객체 사용
  • 보안 걸린 PDF 병합 안됨: 암호 해제 필요 (회사 문서 보안정책 확인)

왜 Spyder + Python이 좋은가

  • 완전 무료: 반복 사용에 비용이 들지 않습니다.
  • 재현 가능: 같은 스크립트를 공유·버전관리하여 팀 내 작업 품질을 표준화합니다.
  • 확장성: 추출·압축·워터마크·메타데이터 수정 등 추가 자동화로 확장하기 쉽습니다.
Advertisement글 최하단 · 띠배너본 도메인에서만 게재