Skip to content

PyPDF2: PDF 조작을 위한 최고의 Python 라이브러리

Updated on

PyPDF2는 Python에서 PDF 조작을 위한 강력하고 무료이며 오픈 소스 라이브러리입니다. 이는 PDF 파일을 쉽게 분할, 병합, 잘라내기, 변형, 암호화 및 복호화할 수 있는 다재다능한 도구입니다. PyPDF2는 PDF 버전 1.4부터 1.7을 지원하며, Python 표준 라이브러리 외에는 다른 종속성이 필요 없으므로 PDF와 함께 작업하는 Python 개발자들에게 편리하고 접근 가능한 선택입니다.

이 라이브러리는 강력하면서도 안전하며, PDF 파일의 무결성과 기밀성을 보장하는 다양한 기능을 제공합니다. PDF에 암호를 추가하거나 텍스트 및 메타데이터를 추출하는 등 PyPDF2는 PDF 조작을 위한 포괄적인 도구 세트를 제공합니다. 본 문서에서는 PyPDF2의 기능을 자세히 설명하고, 정의와 예제를 통해 이 라이브러리를 최대한 활용할 수 있도록 안내합니다.

파이썬 Pandas 데이터프레임으로 데이터 시각화를 빠르게 생성하고 싶으신가요?

PyGWalker는 시각화와 함께 탐색적 데이터 분석을 위한 파이썬 라이브러리입니다. PyGWalker (opens in a new tab)는 팬더스 데이터프레임(및 Polars 데이터프레임)을 Tableau 스타일의 사용자 인터페이스로 변환하여 Jupyter Notebook 데이터 분석 및 데이터 시각화 작업 흐름을 간소화할 수 있습니다.

데이터 시각화를 위한 PyGWalker (opens in a new tab)

PyPDF2란 무엇인가요?

PyPDF2는 PDF 파일의 페이지를 분할, 병합, 잘라내기, 변형할 수 있는 순수 파이썬 라이브러리입니다. 또한 사용자 정의 데이터, 보기 옵션 및 비밀번호를 PDF 파일에 추가할 수 있습니다. PyPDF2는 여기에 더해 PDF에서 텍스트와 메타데이터를 검색할 수도 있어 PDF 조작을 위한 포괄적인 도구로 사용할 수 있습니다.

이 라이브러리는 오픈 소스로 제공되며, 누구나 자유롭게 사용, 수정 및 배포할 수 있습니다. 이는 Python에서 PDF 작업이 필요한 개발자들 사이에서 인기있는 선택이 됩니다. 또한 PyPDF2는 플랫폼에 독립적이므로 Windows, Mac 또는 Linux 기기에서 모두 사용할 수 있습니다.

PyPDF2의 설치 및 사용법

PyPDF2 설치는 간단하며, Python의 패키지 설치 관리자인 pip을 사용하여 수행할 수 있습니다. PyPDF2는 Python 3.6 이상이 필요합니다. pip을 사용하여 PyPDF2를 설치하는 방법은 다음과 같습니다:

pip install PyPDF2

또한 데이터 과학 및 기계 학습을 위한 인기 있는 Python 배포인 아나콘다를 사용하여 PyPDF2를 설치할 수 있습니다. 다음과 같이 하면 됩니다:

pip install git+https://github.com/py-pdf/PyPDF2.git

설치한 후, 다음과 같이 PyPDF2 라이브러리를 Python 스크립트에서 가져올 수 있습니다:

import PyPDF2

사용 중인 PyPDF2 버전을 확인하려면 __version__ 속성을 사용할 수 있습니다:

PyPDF2.__version__

PyPDF2를 사용한 PDF 작업

PyPDF2를 설치한 후, PDF 파일과 함께 작업을 시작할 수 있습니다. 일반적으로 수행해야 할 일부 작업을 살펴보겠습니다.

PDF 읽기

PDF를 읽으려면 먼저 읽기 이진 모드('rb')에서 파일을 열고, PdfFileReader 객체를 생성해야 합니다:

inputFile = "파일_경로/파일명.pdf"
pdf = open(inputFile, "rb")
pdf_reader = PyPDF2.PdfFileReader(pdf)

numPages 속성을 사용하여 PDF의 페이지 수를 확인할 수 있습니다:

totalPages = pdf_reader.numPages
print(totalPages)

PDF에서 텍스트 추출하기

PDF에서 텍스트를 추출하려면 PageObject 클래스의 extractText() 메서드를 사용할 수 있습니다. 먼저, PDF에서 특정 페이지를 나타내는 PageObject를 가져와야 합니다:

page = pdf_reader.getPage(0)  ## 첫 번째 페이지 가져오기

그런 다음, 이 페이지에서 텍스트를 추출할 수 있습니다:

print(page.extractText())

이렇게 하면 PDF의 첫 번째 페이지의 텍스트 내용이 콘솔에 출력됩니다. extractText()가 항상 완벽하게 작동하지는 않을 수 있으므로 PDF의 복잡성과 텍스트의 인코딩에 따라 결과가 다를 수 있습니다.

PDF 페이지 분할하기

PyPDF2의 강력한 기능 중 하나는 PDF 페이지를 분할하는 기능입니다. 이는 PdfFileReader 객체의 getPage() 메서드를 사용하여 페이지를 번호로 가져올 수 있습니다. 다음은 PDF에서 첫 번째 페이지를 분할하는 예입니다:

## PDF 열기
with open('파일_경로/파일명.pdf', 'rb') as file:
    reader = PyPDF2.PdfFileReader(file)
    writer = PyPDF2.PdfFileWriter()
 
    ## 첫 번째 페이지 가져오기
    first_page = reader.getPage(0)
 
    ## 첫 번째 페이지를 PdfFileWriter 객체에 추가하기
    writer.addPage(first_page)
 
    ## 새 파일에 페이지 쓰기
    with open('출력.pdf', 'wb') as output_pdf:
        writer.write(output_pdf)

이 예제에서 출력.pdf는 원본 PDF의 첫 번째 페이지만 포함하는 새로운 PDF 파일이 됩니다.

PDF 병합하기

PyPDF2를 사용하면 여러 개의 PDF를 하나로 병합할 수도 있습니다. 이는 PdfFileMerger 클래스를 사용하여 수행할 수 있습니다. 다음은 예시입니다:

merger = PyPDF2.PdfFileMerger()
 
## 병합할 PDF 목록
pdfs = ['파일1.pdf', '파일2.pdf', '파일3.pdf']
 
for pdf in pdfs:
    merger.append(pdf)
 
merger.write("병합.pdf")
merger.close()

이 예제에서 병합.pdf파일1.pdf, 파일2.pdf, 그리고 파일3.pdf의 모든 페이지를 순서대로 포함하는 새로운 PDF 파일이 됩니다.

PDF에 비밀번호 추가하기

PyPDF2를 사용하면 PDF 파일에 보안을 위해 비밀번호를 추가하는 간단한 방법이 제공됩니다. 이는 PdfFileWriter 객체의 encrypt() 메서드를 사용하여 수행할 수 있습니다. 다음은 예시입니다:

## PDF 열기

다음은 번역된 마크다운 파일입니다. 코드 부분은 번역하지 않았습니다.

with open('path_to_your_pdf_file.pdf', 'rb') as file:
    reader = PyPDF2.PdfFileReader(file)
    writer = PyPDF2.PdfFileWriter()
 
    ## 모든 페이지를 새로운 PDF에 복사합니다
    for pageNum in range(reader.numPages):
        page = reader.getPage(pageNum)
        writer.addPage(page)
 
    ## 새로운 PDF를 암호화합니다
    writer.encrypt('your_password')
 
    ## 암호화된 PDF를 새 파일에 작성합니다
    with open('encrypted.pdf', 'wb') as output_pdf:
        writer.write(output_pdf)

위 예제에서 encrypted.pdf는 원본 PDF의 복사본이지만 'your_password'로 암호화된 새로운 PDF 파일입니다.

PDF를 이미지로 변환하기

PyPDF2는 PDF를 직접 이미지로 변환하는 기능을 지원하지 않지만, PDF2Image와 같은 다른 라이브러리와 함께 사용하여 이를 구현할 수 있습니다. 다음은 예시입니다:

from pdf2image import convert_from_path
 
## PDF를 이미지 목록으로 변환합니다
images = convert_from_path('path_to_your_pdf_file.pdf')
 
## 이미지를 파일로 저장합니다
for i, image in enumerate(images):
    image.save(f'output{i}.png', 'PNG')

위 예제에서는 PDF의 각 페이지를 PNG 이미지로 변환하여 별도의 파일로 저장합니다.

자주 묻는 질문

PyPDF2는 어떤 버전의 PDF를 지원하나요?

PyPDF2는 PDF 버전 1.4부터 1.7까지를 지원합니다. 이로 인해 PyPDF2는 다양한 종류의 PDF 파일을 다룰 수 있어 Python에서 PDF 조작을 위한 다재다능한 선택지가 됩니다.

PyPDF2에는 종속성이 있나요?

아니요, PyPDF2는 Python 표준 라이브러리 이외에는 종속성이 없습니다. Python이 설치된 모든 시스템에서 쉽게 설치하고 사용할 수 있습니다.

PyPDF2를 실행하기 위해 필요한 Python 버전은 어떻게 되나요?

PyPDF2는 Python 3.6 이상을 필요로 합니다. 이는 현대적인 Python 기능과 라이브러리의 전반적인 성능과 보안을 향상시키기 위해 필요합니다.