Python – очень универсальный язык, который позволяет автоматизировать множество задач. В этом уроке я покажу вам, как разделить PDF в Python на несколько страниц благодаря библиотеке PyPDF2.
Содержание
Что такое PyPDF2
PyPDF2 – это библиотека для работы с PDF-файлами, которая, помимо всего прочего, предоставляет нам следующие возможности:
- Извлечение информации из документа (название, автор, …).
- Разделение документов по страницам.
- Объединение нескольких документов в один.
- Обрезание страниц из документа.
- Объедините несколько страниц в одну.
- Шифрование и расшифровка файлов PDF.
Установка PyPDF2
Первое, что вы должны сделать для использования PyPDF2, это установить его. Так как он является библиотекой стороннего производителя. Поэтому создайте виртуальную среду, активируйте ее и выполните следующую команду:
$> pip install PyPDF2
Получение страницы из документа PDF
Далее я покажу вам, как извлечь страницу из PDF в новый документ с помощью этой библиотеки.
Для этого я определил функцию extract_page(doc_name, page_num).
Параметр doc_name – это полный путь к документу. Если документ находится в том же пути, что и программа Python, достаточно указать его имя. Параметр page_num – это номер страницы для извлечения (будьте внимательны, поскольку первая страница начинается с индекса 0):
from PyPDF2 import PdfFileWriter, PdfFileReader
def extract_page(doc_name, page_num):
pdf_reader = PdfFileReader(open(doc_name, 'rb'))
pdf_writer = PdfFileWriter()
pdf_writer.addPage(pdf_reader.getPage(page_num))
with open(f'document-page{page_num}.pdf', 'wb') as doc_file:
pdf_writer.write(doc_file)
Code language: JavaScript (javascript)
Разделение PDF в Python по номеру страницы
В этом разделе мы рассмотрим новую функцию, которая позволяет разделить PDF в Python на две части по номеру страницы. Я вызвал функцию split_pdf(doc_name, page_num). Как и в предыдущем случае, параметр doc_name является путем или именем документа. page_num указывает номер страницы, который будет использоваться для разделения документа на две части (первая страница начинается с индекса 0):
def split_pdf(doc_name, page_num):
pdf_reader = PdfFileReader(open(doc_name, "rb"))
pdf_writer1 = PdfFileWriter()
pdf_writer2 = PdfFileWriter()
for page in range(page_num):
pdf_writer1.addPage(pdf_reader.getPage(page))
for page in range(page_num, pdf_reader.getNumPages()):
pdf_writer2.addPage(pdf_reader.getPage(page))
with open("doc1.pdf", 'wb') as file1:
pdf_writer1.write(file1)
with open("doc2.pdf", 'wb') as file2:
pdf_writer2.write(file2)
Code language: JavaScript (javascript)
В результате функция генерирует два документа под названием doc1.pdf и doc2.pdf.