Конвертируем PDF под вашу читалку в Python

Конвертируем PDF под вашу читалку в Python
Python Snippets: Adjusting PDF Books from Wide to Narrow Format

По рекомендациям друзей попалась мне в руки электронная книга Гайдара Е.Т. "Власть и собственность". Вступление достаточно интересное, но читать с компьютера не всегда удобно (1.5кг с собой в руке не натаскаешься). Решил закачать PDF в свою читалку формата A5. Оригинальная электронная книга оказалась горизонтального формата A4 (т.е. по две страницы A5 слева направо):

Оригинальный формат PDF

Читать такое на книге в формате 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")

Результат преобразования:

PROFIT

Пользуйтесь на здоровье. Только обратите внимание, что у меня используется нестандартное сочетание height/right и width/top. Это связано с тем, что каждая страница моего PDF была повернута на 90 градусов (можно более внимательно проверить с помощью консольной утилиты типа pdftk).

Полезные ссылки

Курс промышленной разработки на Python
Авторский курс Python от Алексея Драля для IT-специалистов. С нами вы научитесь писать чистый и поддерживаемый код как в лучших технологических компаниях.