[python] PDF 파일에서 특정 영역 복사하기

PDF 파일에서 특정 영역을 복사하여 다른 곳에 붙여넣기를 해야하는 경우가 있습니다. 이를 위해 Python 언어를 사용하여 PDF 파일에서 특정 영역을 추출하고 복사하는 방법을 알아보겠습니다.

필요한 라이브러리 설치

PDF 파일의 조작을 위해 PyPDF2 라이브러리가 필요합니다. 아래의 명령을 사용하여 라이브러리를 설치합니다.

pip install PyPDF2

코드 작성

import PyPDF2

def copy_pdf_area(input_path, output_path, page_number, x1, y1, x2, y2):
    # 입력 파일 열기
    with open(input_path, 'rb') as input_file:
        # PDF 리더 객체 생성
        pdf_reader = PyPDF2.PdfReader(input_file)
        
        # 출력 파일 생성
        with open(output_path, 'wb') as output_file:
            # PDF 작성자 객체 생성
            pdf_writer = PyPDF2.PdfWriter()
            
            # 페이지 수가 유효한지 확인
            if page_number < 0 or page_number >= len(pdf_reader.pages):
                raise ValueError("Invalid page number.")
            
            # 페이지 객체 가져오기
            page = pdf_reader.pages[page_number]
            
            # 페이지 크기 가져오기
            page_width = page.mediaBox.upperRight[0]
            page_height = page.mediaBox.upperRight[1]
            
            # 영역 좌표 계산
            x1 = min(max(0, x1), page_width)
            y1 = min(max(0, y1), page_height)
            x2 = min(max(0, x2), page_width)
            y2 = min(max(0, y2), page_height)
            
            # 영역 선택
            page.cropBox.lowerLeft = (x1, y1)
            page.cropBox.upperRight = (x2, y2)
            
            # 영역 복사
            pdf_writer.add_page(page)
            
            # 출력 파일에 저장
            pdf_writer.write(output_file)
            
            print("영역이 성공적으로 복사되었습니다.")

사용 방법

위의 코드를 사용하려면 다음과 같이 함수를 호출하면 됩니다.

copy_pdf_area('입력파일.pdf', '출력파일.pdf', 페이지번호, x1, y1, x2, y2)

참고 자료