보고서나 신고서를 다 만들었는데, 딱 한 페이지에서 오타가 발견되거나 수치가 변경된 경험, 다들 있으시죠?
전체 파일을 다시 병합하자니 번거롭고, 유료 PDF 편집 프로그램을 결제하자니 돈이 아깝고... 그렇다고 보안이 중요한 회사 문서를 아무 온라인 변환 사이트에나 올릴 수도 없을 때가 많습니다.
이럴 때 파이썬(Python)을 이용하면 아주 간단하고 안전하게 특정 페이지만 '교체'할 수 있습니다. 오늘은 100페이지짜리 문서라도 내가 원하는 페이지만 콕 집어서 수정본으로 갈아 끼우는 소스 코드를 공유합니다.
저는 이번에 pdf파일의 19페이지를 수정된 파일로 교체하는 작업을 진행했는데, 코드를 저장해 두시면 페이지 번호만 바꿔서 계속 쓰실 수 있습니다.
1. 라이브러리 설치
먼저 터미널에서 아래 명령어로 pypdf 라이브러리를 설치해 주세요.
pip install pypdf
2. 파이썬 소스 코드
아래 코드를 복사해서 파이썬 파일(예: replace_pdf.py)로 만드시면 됩니다.
from pypdf import PdfReader, PdfWriter
import os
# --- 설정 부분 (여기만 수정해서 쓰세요) ---
# 1. 원본 PDF 파일명 (확장자 .pdf 까지 정확히 입력)
source_file = "원본파일.pdf"
# 2. 교체해 넣을 수정본 PDF 파일명 (이 파일의 1페이지를 가져옵니다)
replacement_file = "수정본_페이지.pdf"
# 3. 결과물로 저장될 파일명
output_file = "수정된_원본파일.pdf"
# 4. 교체할 페이지 번호 (예: 19페이지를 바꾸고 싶으면 19 입력)
target_page_number = 19
def replace_pdf_page():
# 파일이 실제로 있는지 확인
if not os.path.exists(source_file):
print(f"오류: 원본 파일 '{source_file}'을 찾을 수 없습니다.")
return
if not os.path.exists(replacement_file):
print(f"오류: 교체할 파일 '{replacement_file}'을 찾을 수 없습니다.")
return
try:
# PDF 읽기 도구 생성
reader_source = PdfReader(source_file)
reader_replacement = PdfReader(replacement_file)
writer = PdfWriter()
# 페이지 인덱스 계산 (사람은 1부터 세지만, 컴퓨터는 0부터 세므로 1을 뺍니다)
target_index = target_page_number - 1
# 원본 파일의 총 페이지 수 확인
total_pages = len(reader_source.pages)
print(f"작업 시작: 총 {total_pages}페이지 중 {target_page_number}페이지를 교체합니다...")
# 페이지를 한 장씩 넘기면서 처리
for i in range(total_pages):
if i == target_index:
# 교체해야 할 순서(19페이지)가 오면 수정본의 첫 페이지를 끼워 넣음
writer.add_page(reader_replacement.pages[0])
print(f" -> {target_page_number}페이지 교체 완료")
else:
# 나머지는 원본 그대로 복사
writer.add_page(reader_source.pages[i])
# 결과 파일 저장
with open(output_file, "wb") as f_out:
writer.write(f_out)
print("-" * 30)
print(f"성공적으로 저장되었습니다: {output_file}")
except Exception as e:
print(f"작업 중 오류가 발생했습니다: {e}")
# 스크립트 실행
if __name__ == "__main__":
replace_pdf_page()
마무리
이 코드를 활용하면 19페이지뿐만 아니라 변수만 바꿔서 3페이지, 50페이지 등 원하는 곳 어디든 수정이 가능합니다. PDF 편집 때문에 스트레스받지 마시고 파이썬으로 1초 만에 해결해 보세요!
반응형