PyMuPDF 1.22.5 (from pip)
PyMuPDF를 이용하여, 여러 PDF를 그냥 합쳐주는 간단한 프로그램을 만들어 봤다.
(문서 합쳐서 제출하는 일이 잦았나보다. 예제 생각하다가 이게 떠오르다니... --;;)
대부분의 PDF를 다루는 패키들과 마찬가지로, 새로운 pdf 파일에 대한 객체를 empty로 먼저 만든 후, 각 pdf들을 읽어드령 이들을 page로 추가해주면 되는 방식이다.
추가적으로 argparse에 대한 예제로 쓸만할 거 같다.
예제코드
코드는 다음과 같다.
import argparse
import os
import fitz
def set_argparse ():
parser = argparse.ArgumentParser(
description = "This program can merge multiple pdf files into a single pdf file."
)
parser.add_argument('--input', '-i', nargs='*', required=True,
help='input0.pdf input1.pdf ...',
dest='inputs')
parser.add_argument('--output', '-o',
help='output.pdf',
default='merged_output.pdf',
dest='output')
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):
merged_pdf = fitz.open() # empty pdf document
if sort_mode:
inputs = sorted(inputs)
for i in inputs:
try:
c = fitz.open(i)
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())
parser = set_argparse()
args = parser.parse_args()
print(f'inputs : {args.inputs}')
print(f'output : {args.output}')
merge_pdfs(args.inputs,args.output,args.sort)
참고자료
PyMuPDF 관련 참고 자료.
https://pymupdf.readthedocs.io/en/latest/tutorial.html#tutorial
argparse 관련 참고 자료.
https://dsaint31.tistory.com/entry/Python-argparse-%EC%82%AC%EC%9A%A9%ED%95%98%EA%B8%B0
exception 처리 관련 참고 자료.
https://dsaint31.tistory.com/entry/Python-Exception-%EC%B2%98%EB%A6%AC
'Python > PDF' 카테고리의 다른 글
[PDF] Text 추출하기: PyPDF2 vs. PyMuPDF (0) | 2023.06.28 |
---|