2

Как изменить поля страниц PDF с помощью Python⁠⁠

При обработке документов часто возникает необходимость корректировать пустые края (поля) PDF-файлов: например, оставить свободное место для печати, обрезать лишние белые отступы или привести макет всех документов к единому формату. В экосистеме Python существует несколько библиотек для работы с PDF. В данной статье используется Free Spire.PDF for Python для реализации легковесных операций увеличения и уменьшения полей PDF полностью на чистом коде без водяных знаков.

Данное решение не требует установки сложных зависимостей. Основной алгоритм заключается в создании нового PDF-документа, пересчете размеров страниц и перерисовке страниц через шаблоны. Это позволяет точно регулировать пустые края со всех четырех сторон (верхней, нижней, левой и правой) документа, подходит для одностраничных и многостраничных PDF.

1. Настройка окружения

Сначала установите требуемую стороннюю библиотеку. Free Spire.PDF for Python ориентирована на базовые операции редактирования PDF, имеет лаконичный и понятный API, удобна для быстрой разработки. Выполните следующую команду pip для завершения установки:

pip install spire.pdf.free

2. Обзор принципа работы

Оба метода корректировки полей, описанные в статье, строятся на единой логике — разница лишь в расчете размеров и параметрах отрисовки:

  • Увеличение полей : Увеличить размер страницы PDF, оставить исходное содержимое по центру, а новую пустую область использовать как поля.

  • Уменьшение полей : Сократить размер страницы PDF и обрезать лишние белые края исходной страницы за счет смещения координат отрисовки контента.

Общий алгоритм работы: загрузка исходного PDF → расчет нового размера страницы → перебор страниц с генерацией шаблонов → создание новых страниц и перерисовка содержимого → сохранение нового файла и освобождение ресурсов.

3. Увеличение полей страниц PDF на Python

Данный сценарий актуален, когда контент PDF слишком близко подходит к краям, нужно добавить пустое место для печати или привести все поля документа к единым стандартам. Ниже представлен упрощенный код, готовый к запуску; вы можете самостоятельно задать величину добавляемых полей сверху, снизу, слева и справа.

from spire.pdf.common import SizeF
from spire.pdf import PdfDocument
# 1. Загрузка исходного PDF-документа
original_pdf = PdfDocument()
original_pdf.LoadFromFile("sample.pdf")
# 2. Задание собственных размеров добавляемых полей со всех четырех сторон
margin_top = 40
margin_bottom = 40
margin_left = 40
margin_right = 40
# 3. Расчет нового размера страницы по размеру первой страницы (подходит для всех страниц документа)
first_page = original_pdf.Pages[0]
new_page_width = first_page.Size.Width + margin_left + margin_right
new_page_height = first_page.Size.Height + margin_top + margin_bottom
new_page_size = SizeF(new_page_width, new_page_height)
# 4. Создание нового PDF-документа и перерисовка всех страниц
new_pdf = PdfDocument()
for page_idx in range(original_pdf.Pages.Count):
# Генерация шаблона исходной страницы с сохранением всего контента
page_template = original_pdf.Pages[page_idx].CreateTemplate()
# Добавление новой страницы заданного размера
new_page = new_pdf.Pages.Add(new_page_size)
# Отрисовка исходного контента в левом верхнем углу новой страницы, автоматически формируя равномерные пустые поля
page_template.Draw(new_page, 0.0, 0.0)
# 5. Сохранение файла и освобождение ресурсов
new_pdf.SaveToFile("increase_pdf_margins.pdf")
original_pdf.Dispose()
new_pdf.Dispose()
print("Увеличение полей PDF завершено!")

Основное пояснение : Размер страницы увеличивается путем прибавления значений полей к исходной ширине и высоте. Исходное содержимое полностью сохраняется в левом верхнем углу страницы, а оставшаяся область автоматически формирует равномерные пустые отступы.

Результат работы:

4. Уменьшение полей страниц PDF на Python

Этот сценарий чаще всего используется для удаления лишних стандартных белых краев PDF, сжатия видимого размера документа и приближения контента к границам страницы. Суть метода — сократить размер страницы и одновременно сдвинуть координаты отрисовки контента в противоположную сторону, чтобы обрезать лишние пустые края.

from spire.pdf.common import SizeF
from spire.pdf import PdfDocument, PdfMargins
# 1. Загрузка исходного PDF-документа
original_pdf = PdfDocument()
original_pdf.LoadFromFile("sample.pdf")
# 2. Задание размеров пустых полей, которые нужно обрезать со всех четырех сторон
reduce_top = 60.0
reduce_bottom = 60.0
reduce_left = 40.0
reduce_right = 40.0
# 3. Расчет нового размера страницы после обрезки полей
first_page = original_pdf.Pages[0]
new_page_width = first_page.Size.Width - reduce_left - reduce_right
new_page_height = first_page.Size.Height - reduce_top - reduce_bottom
new_page_size = SizeF(new_page_width, new_page_height)
# 4. Создание нового PDF-документа, перерисовка и обрезка пустых краев страниц
new_pdf = PdfDocument()
for page_idx in range(original_pdf.Pages.Count):
page_template = original_pdf.Pages[page_idx].CreateTemplate()
# Добавление новой страницы без стандартных полей
new_page = new_pdf.Pages.Add(new_page_size, PdfMargins(0.0))
# Смещение координат отрисовки в противоположную сторону для обрезки исходных белых краев
page_template.Draw(new_page, -reduce_left, -reduce_top)
# 5. Сохранение файла и освобождение ресурсов
new_pdf.SaveToFile("decrease_pdf_margins.pdf")
original_pdf.Dispose()
new_pdf.Dispose()
print("Обрезка полей PDF завершена!")

Основное пояснение : Из размеров страницы вычитается величина обрезаемых пустых отступов, при этом координаты отрисовки контента сдвигаются влево и вверх. Благодаря этому исходные пустые края страницы выходят за границы новой страницы, достигая эффекта обрезки белых полей.

Результат работы:

5. Важные замечания

  • Единицы измерения : Все значения полей в коде заданы в стандартных единицах PDF (пунктах). 1 дюйм ≈ 72 пункта; при необходимости значения можно свободно пересчитывать и корректировать.

  • Поддержка многостраничных документов : Код использует единые параметры полей для всего документа, поэтому все страницы получают одинаковое увеличение или уменьшение отступов — удобно для стандартизированной обработки документов.

  • Освобождение ресурсов : Обязательно вызывайте метод Dispose() для освобождения ресурсов документа, чтобы избежать постепенного переполнения оперативной памяти.

  • Ограничения параметров при уменьшении полей : Величина обрезки не должна превышать размер исходных пустых краев страницы, иначе часть контента может быть обрезана некорректно.

6. Итог

С помощью библиотеки Free Spire.PDF for Python можно минимальным и эффективным кодом реализовать ручную настройку полей PDF без использования программ Adobe и сложных алгоритмов парсинга PDF. Два набора кода из статьи покрывают два наиболее распространенных сценария: добавление пустых отступов и обрезка белых краев . Код лаконичный, снабжен полными комментариями и может быть напрямую интегрирован в скрипты автоматизированной обработки документов, офисные утилиты и программы пакетной обработки файлов.

0
Автор поста оценил этот комментарий

Лучше скажите, как научить скрипты питон нормально делать OCR кириллицы)

Темы

Политика

Теги

Популярные авторы

Сообщества

18+

Теги

Популярные авторы

Сообщества

Игры

Теги

Популярные авторы

Сообщества

Юмор

Теги

Популярные авторы

Сообщества

Отношения

Теги

Популярные авторы

Сообщества

Здоровье

Теги

Популярные авторы

Сообщества

Путешествия

Теги

Популярные авторы

Сообщества

Спорт

Теги

Популярные авторы

Сообщества

Хобби

Теги

Популярные авторы

Сообщества

Сервис

Теги

Популярные авторы

Сообщества

Природа

Теги

Популярные авторы

Сообщества

Бизнес

Теги

Популярные авторы

Сообщества

Транспорт

Теги

Популярные авторы

Сообщества

Общение

Теги

Популярные авторы

Сообщества

Юриспруденция

Теги

Популярные авторы

Сообщества

Наука

Теги

Популярные авторы

Сообщества

IT

Теги

Популярные авторы

Сообщества

Животные

Теги

Популярные авторы

Сообщества

Кино и сериалы

Теги

Популярные авторы

Сообщества

Экономика

Теги

Популярные авторы

Сообщества

Кулинария

Теги

Популярные авторы

Сообщества

История

Теги

Популярные авторы

Сообщества

Недвижимость и ремонт

Теги

Популярные авторы

Сообщества