경영 지원

[파이썬 코드] PDF 1페이지씩 분할하기 - 각 파일별 제목 지정

경영지원실장 2024. 1. 5. 08:38
728x90
반응형

업무상 PDF를 한장씩 나눠서 별도의 파일로 저장해야할 일이 생겼어요. PDF프로그램상의 기능도 있고, 웹에서 제공하는 프로그램을 쓸수도 있어요. 저는 각 파일의 제목을 페이지 첫줄로 지정하고 싶었기 때문에 파이썬 코드를 이용하기로 했습니다. 

 

PDF를 한 페이지씩 분리하고 각 파일의 제목을 해당 페이지의 첫 번째 줄의 내용으로 설정하기 위해 PyPDF2와 PyMuPDF(Python PDF Toolkit) 라이브러리를 사용할 수 있습니다.

 

 

먼저, PyMuPDF 라이브러리를 설치해야 합니다. 아래 명령어를 사용하여 설치할 수 있습니다.

pip install PyMuPDF

 

 

다음은 PDF를 한 페이지씩 분리하고 각 파일의 제목을 해당 페이지의 첫 번째 줄의 내용으로 설정하는 파이썬 코드입니다.

 


import fitz  # PyMuPDF
import os

def split_pdf(pdf_path, output_folder):
    # PDF 파일 열기
    pdf_document = fitz.open(pdf_path)
    
    # 각 페이지에 대해 반복
    for page_num in range(pdf_document.page_count):
        # 페이지 가져오기
        page = pdf_document.load_page(page_num)
        
        # 페이지의 텍스트 추출
        text = page.get_text("text")
        
        # 첫 번째 줄의 내용을 제목으로 사용
        first_line = text.split('\n')[0].strip()  # 공백 제거
        
        # 파일명 생성
        file_name = f"{first_line}.pdf"
        
        # 새로운 PDF 파일 생성 및 저장 (특정 폴더에 저장)
        output_path = os.path.join(output_folder, file_name)
        new_pdf = fitz.open()
        new_pdf.insert_pdf(pdf_document, from_page=page_num, to_page=page_num)
        new_pdf.save(output_path)
        new_pdf.close()
    
    # 원본 PDF 파일 닫기
    pdf_document.close()

# PDF 파일 경로 설정
pdf_file_path = r"C:\Users\your_folder_name\your_pdf_file.pdf"

# 분리된 PDF를 저장할 폴더 경로 설정
output_folder_path = r"C:\Users\ your_folder_name"  # 원하는 폴더 경로로 변경하세요

# PDF 분리 함수 호출
split_pdf(pdf_file_path, output_folder_path)


복사해서 가져가 쓰실 때 주의할 점이 있습니다. 

 

바로, PDF파일 경로 설정입니다. 이 부분에서 실수를 하기 쉬운데요. 

 

내가 분리하고 싶은 PDF파일이 어느 경로, 어느 폴더에 들어있는지 정확하게 알려줘야 합니다. 분리하고 싶은 파일 이름까지 같이 적어주세요. 

 

# PDF 파일 경로 설정
pdf_file_path = r"C:\Users\your_folder_name\your_pdf_file.pdf"

 

현재 이 부분은 예시로 들어있기 때문에 코드를 실행하기전에 본인이 원하는 폴더의 파일명을 정확하게 적어주세요. 

 

분리된 PDF를 저장할 폴더 경로 설정도 마찬가지입니다. 
output_folder_path = r"C:\Users\ your_folder_name"  # 원하는 폴더 경로로 변경하세요.

 


코드 실행 결과 이렇게 PDF파일들이 한페이지씩 분리되었습니다. 제목도 원하는대로 잘 들어갔고요. 직원들에게 나눠주어야 할 연간지급공제명세서를 파이썬 코드를 이용해서 분리해봤습니다. 제목을 직접 작성하지 않아도 되어서 간편하게 일할 수 있었습니다. 

 

 

728x90
반응형