Формат переносимых документов (PDF) не является форматом WYSIWYG (What You See is What You Get (То, Что Вы Видите, это То, Что Вы Получаете)). Он был разработан, чтобы быть независимым от платформы, независимым от базовой операционной системы и механизмов рендеринга. Для достижения этой цели PDF был создан для взаимодействия с помощью чего-то более похожего на язык программирования, и для достижения результата полагается ряд инструкций и операций. Фактически, PDF основан на языке сценариев - PostScript, который был первым независимым от устройства языком описания страниц. В этом руководстве мы будем использовать borb - библиотеку Python, предназначенную для чтения, манипулирования и генерации PDF-документов. Он предлагает как низкоуровневую модель (что позволяет получить доступ к точным координатам и макету), так и высокоуровневую модель (где вы можете делегировать точные расчеты полей, позиций и т. д.). В этом руководстве мы рассмотрим, как разделить и объединить PDF-документы на Python с помощью borb, а также рассмотрим, как поворачивать страницы в PDF-документе. Разделение и объединение PDF-документов являются основой для многих сценариев использования: Обработка счета-фактуры (вам не нужны условия, чтобы вы могли удалить эти страницы) Добавление сопроводительного письма к документам (отчет об испытаниях, счет-фактура, рекламные материалы) Агрегирование тестовых результатов из гетерогенных источников И т.д. Borb можно загрузить из исходного кода на GitHub или установить через pip: Чтобы продемонстрировать разделение, вам понадобится PDF-файл с несколькими страницами. Мы начнем с создания такого PDF-файла с помощью borb. Этот шаг не является обязательным, вы, конечно, можете просто использовать PDF-файл, который у вас есть вместо этого: Этот пример кода генерирует PDF-документ, состоящий из 10 страниц: Каждая страница начинается с «Страницы x из 10». Это облегчит идентификацию страниц позже. Каждая страница содержит 1 абзац текста. Теперь давайте разделим данный PDF. Начнем с его разделения на две части: первая половина содержит первые 5 страниц, а вторая половина содержит оставшиеся: Мы извлекли первые 5 страниц в новый Document, а следующие 5 страниц во второй новый Document, фактически разделив оригинальную на две меньшие сущности.  Может быть упрощен с помощью метода get_page(), так как его возвращаемый тип может быть непосредственно использован для withappendappend_page(). Вы можете проверить полученные PDF-файлы, чтобы убедиться, что код работает должным образом Для работы со следующими примерами нам понадобятся два PDF-файла. Давайте использовать более ранний код для их генерации, если у вас его еще нет: Интуиция, используемая для разделения, очень похожа на слияние - хотя мы можем добавлять целые документы в другие документы, а не только страницы. Однако иногда вам может потребоваться разделить документ (отрезать последнюю страницу), прежде чем объединять его с другой. Мы можем объединить их полностью (объединяя оба PDF-файла), но мы также можем просто добавить некоторые страницы первого PDF-файла во второй, если предпочтем это таким образом - используя функцию append_page(), как и раньше. Давайте начнем с их полного объединения : Страница в PDF-документе может быть повернута на 90 градусов в любую сторону. Этот вид работы позволяет легко переключаться между альбомным и портретным режимами. В следующем примере вы сможете повернуть страницу одного из входных PDF-файлов, которые мы создали ранее: