
PyMuPDF 1.22.5 (from pip)
PyMuPDF를 이용하여, 여러 PDF를 그냥 합쳐주는 간단한 프로그램을 만들어 봤다.
(문서 합쳐서 제출하는 일이 잦았나보다. 예제 생각하다가 이게 떠오르다니... --;;)
참고로, fitz가 PyMuPDF 패키지의 import alias임
— PDF 페이지를 열고, 병합하고, 저장하는 등의 작업을 수행
대부분의 PDF를 다루는 패키들과 마찬가지로, 새로운 pdf 파일에 대한 객체를 empty로 먼저 만든 후, 각 pdf들을 읽어들여 이들을 page로 추가해주면 되는 방식이다.
추가적으로 argparse에 대한 예제로 쓸만할 거 같다.
예제코드
코드는 다음과 같다.
import argparse
import os
import fitz # PyMuPDF 모듈: PDF 파일을 열고, 페이지를 조작하고, 병합/추출/편집 등을 지원
def set_argparse ():
parser = argparse.ArgumentParser(
description = "This program can merge multiple pdf files into a single pdf file."
)
# --input 또는 -i 옵션: 여러 PDF 입력 파일 지정 (필수)
parser.add_argument('--input', '-i', nargs='*', required=True,
help='input0.pdf input1.pdf ...',
dest='inputs')
# --output 또는 -o 옵션: 병합 결과 파일 이름 (기본값 = merged_output.pdf)
parser.add_argument('--output', '-o',
help='output.pdf',
default='merged_output.pdf',
dest='output')
# --sort 또는 -s 옵션: 입력 파일 이름을 알파벳순으로 정렬
parser.add_argument('--sort','-s', action='store_true',
help="sort the input files by the alphabet order")
return parser
def merge_pdfs(inputs, output, sort_mode):
# 빈 PDF 객체 생성
# fitz.open()을 인자 없이 호출하면 '새로운 빈 PDF 문서'를 생성한다
merged_pdf = fitz.open() # empty pdf document
if sort_mode:
inputs = sorted(inputs)
for i in inputs:
try:
# 기존 PDF 파일 열기
# fitz.open(filename) : 해당 파일을 PDF 객체
c = fitz.open(i)
# 다른 PDF 문서(c)의 모든 페이지를 현재 PDF(merged_pdf)에 삽입
merged_pdf.insert_pdf(c)
c.close()
except Exception as e:
print(f"Error: It can't processing [{i}]")
merged_pdf.save(output)
merged_pdf.close()
if __name__ == '__main__':
# 현재 작업 디렉토리 출력
print(os.getcwd())
# argparse 파서 생성 및 명령줄 인자 파싱
parser = set_argparse()
args = parser.parse_args()
print(f'inputs : {args.inputs}')
print(f'output : {args.output}')
# PDF 병합 함수 실행
merge_pdfs(args.inputs,args.output,args.sort)
참고자료
PyMuPDF 관련 참고 자료.
https://pymupdf.readthedocs.io/en/latest/tutorial.html#tutorial
Tutorial - PyMuPDF 1.22.5 documentation
Previous The Basics
pymupdf.readthedocs.io
argparse 관련 참고 자료.
https://dsaint31.tistory.com/477
[Python] argparse 모듈 사용하기.
argparse 모듈Python에서 기본적으로 제공하는 명령어 인자 파서 모듈이다. command line inerface 으로 프로그램을 만들 때 기본적으로 필요하다.linux 쪽 경험이 풍부한 이들에겐 getopt가 보다 익숙하지만
dsaint31.tistory.com
exception 처리 관련 참고 자료.
https://dsaint31.tistory.com/526
[Python] Exception 처리
1. Exception 발생 시 기본 동작Python에서 무엇인가가 잘못된 경우, python interpreter는 exception을 발생시킴.Exception : 동작을 중단시키는 에러를 가르킴.Exception handling : Exception 처리라고도 불리며, 발생
dsaint31.tistory.com
'Python > PDF' 카테고리의 다른 글
| ReportLab-Python에서 PDF문서 만들기: (0) | 2025.09.19 |
|---|---|
| [PDF] Text 추출하기: PyPDF2 vs. PyMuPDF (0) | 2023.06.28 |