PyPDF2: PDF 조작을 위한 최고의 Python 라이브러리
Published 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 데이터 분석 및 데이터 시각화 작업 흐름을 간소화할 수 있습니다.
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 기능과 라이브러리의 전반적인 성능과 보안을 향상시키기 위해 필요합니다.