PDF 파일의 페이지 수를 출력하는 코드이다. 별 다른 설명이 필요없을 정도로 간단하다.
def get_pdf_num_of_pages(pdf_file_path):
with open(pdf_file_path, 'rb') as src_pdf_file:
pdf_reader = PyPDF2.PdfFileReader(src_pdf_file)
num_of_pages = pdf_reader.numPages
return num_of_pages
PDF 파일에서 특정 페이지를 추출하여 추출한 페이지만 외부 파일로 저장하는 코드이다. getPage() 메소드에 정수값을 전달하여 특정 페이지를 가져올 수 있는데 페이지 인덱스는 1이 아닌 0부터 시작한다. 즉, 첫 번째 페이지를 추출하려면 정수 1을 전달하는 것이 아니라 0을 전달해야 한다.
하나 주의해야할 것은 source PDF 파일에 대한 read stream을 끊기 전에 output PDF 파일을 write해야 한다는 것이다.
def extract_pdf_pages(pdf_file_path, pdf_out_file_path, page_list_to_extract):
with open(pdf_file_path, 'rb') as src_pdf_file:
pdf_reader = PyPDF2.PdfFileReader(src_pdf_file)
pdf_writer = PyPDF2.PdfFileWriter()
# PDF 첫 번째 페이지를 추출하려면 정수 1이 아닌 0을 전달해야 한다.
for page_number in page_list_to_extract:
pdf_writer.addPage(pdf_reader.getPage(page_number))
# Source PDF 파일의 스트림을 끊기 전에 output PDF 파일을 write해야 한다.
with open(pdf_out_file_path, 'wb') as out_file:
pdf_writer.write(out_file)
PDF 페이지 수를 가져오는 코드와 PDF 페이지 추출하는 코드를 응용하여 여러 개의 PDF 파일을 합칠 수도 있다. 여러 PDF 파일을 단순히 합치는 코드는 다음과 같이 쓸 수 있다.
def merge_pdf_files(pdf_file_path_list, pdf_out_file_path):
pdf_writer = PyPDF2.PdfFileWriter()
for pdf_file_path in pdf_file_path_list:
with open(pdf_file_path, 'rb') as src_pdf_file:
pdf_reader = PyPDF2.PdfFileReader(src_pdf_file)
for page_number in range(pdf_reader.numPages):
pdf_writer.addPage(pdf_reader.getPage(page_number))
# Loop를 여러번 돌면 output PDF 파일이 overwritten 된다.
with open(pdf_out_file_path, 'wb') as out_file:
pdf_writer.write(out_file)