업무상 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파일들이 한페이지씩 분리되었습니다. 제목도 원하는대로 잘 들어갔고요. 직원들에게 나눠주어야 할 연간지급공제명세서를 파이썬 코드를 이용해서 분리해봤습니다. 제목을 직접 작성하지 않아도 되어서 간편하게 일할 수 있었습니다.
'경영 지원' 카테고리의 다른 글
Auto CAD 저렴이? 중국산 CAD를 알아보자 (0) | 2025.02.02 |
---|---|
외경 황삭 가공을 위한 G코드 작성법 (0) | 2025.02.02 |
챗GPT로 파이썬 코드 작성(#수학문제해결, #함수, #업무자동화) (0) | 2023.11.28 |
가공 레시피 작성을 위하여 - 제조업 경영지원실 업무 근황 (1) | 2023.11.25 |
Chat GPT한테 엑셀 함수 교정 받기 (0) | 2023.09.13 |