Конвертируем PDF под вашу читалку в Python
По рекомендациям друзей попалась мне в руки электронная книга Гайдара Е.Т. "Власть и собственность". Вступление достаточно интересное, но читать с компьютера не всегда удобно (1.5кг с собой в руке не натаскаешься). Решил закачать PDF в свою читалку формата A5. Оригинальная электронная книга оказалась горизонтального формата A4 (т.е. по две страницы A5 слева направо):
Читать такое на книге в формате A5 довольно больно, поэтому появилось желание порезать каждую страницу пополам и склеить обратно в единый PDF. С помощью Chat GPT, документации и один час на эксперименты, удалось собрать рабочую версию:
# ставим библиотеку в ваше любимое виртуальное окружение:
pip install PyPDF2
и после этого смело пишем код на Python:
from PyPDF2 import PdfReader, PdfWriter
def split_pages(input_pdf, output_pdf):
reader_left = PdfReader(input_pdf)
reader_right = PdfReader(input_pdf)
writer = PdfWriter()
for page_left, page_right in zip(reader_left.pages, reader_right.pages):
height = page_left.mediabox.right
width = page_left.mediabox.top
page_left.cropbox.upper_right = (height, width / 2)
writer.add_page(page_left)
page_right.cropbox.lower_left = (0, width / 2)
writer.add_page(page_right)
with open(output_pdf, "wb") as output:
writer.write(output)
if __name__ == "__main__":
split_pages("input.pdf", "output.pdf")
Результат преобразования:
Пользуйтесь на здоровье. Только обратите внимание, что у меня используется нестандартное сочетание height/right и width/top. Это связано с тем, что каждая страница моего PDF была повернута на 90 градусов (можно более внимательно проверить с помощью консольной утилиты типа pdftk).
Полезные ссылки
- Cropping and Transforming PDFs with PyPDF2;
- Как с помощью PyPDF2 работать
со смысломс текстом, изображениями и формами в PDF; - Научиться грамотно писать консольные утилиты и Web-сервисы на Python.
Comments ()