(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이 좋은가
- 완전 무료: 반복 사용에 비용이 들지 않습니다.
- 재현 가능: 같은 스크립트를 공유·버전관리하여 팀 내 작업 품질을 표준화합니다.
- 확장성: 추출·압축·워터마크·메타데이터 수정 등 추가 자동화로 확장하기 쉽습니다.