Как добавить текст в PDF с помощью Python
При обработке документов часто требуется добавить текст в существующий PDF-файл: примечания, пояснения, текстовые водяные знаки или подписи с номерами страниц. В Python доступно множество библиотек для работы с PDF. Среди них Free Spire.PDF for Python предлагает простой API и гибкие настройки оформления, не требуя установки компонентов Adobe. Библиотека позволяет добавлять текст, настраивать шрифты, цвет, прозрачность и угол поворота.
В этой статье рассмотрим, как добавлять текст в PDF с помощью Free Spire.PDF: от базового примера до расширенных настроек оформления.
1. Подготовка среды
1.1. Установка библиотеки
Установите Free Spire.PDF с помощью pip:
pip install spire-pdf-free
Библиотека поддерживает Python 3.7 и более поздние версии и работает в Windows, macOS и Linux. После установки можно использовать её API для редактирования PDF.
1.2. Основные классы
В примерах используются следующие классы:
- PdfDocument — основной класс для загрузки, сохранения и закрытия PDF-документов.
- PdfCjkStandardFont, PdfTrueTypeFont, PdfFont — классы для работы со шрифтами CJK, пользовательскими шрифтами TrueType и встроенными стандартными шрифтами PDF соответственно.
- PdfSolidBrush, PdfRGBColor — классы для создания кисти и настройки цвета текста.
- PointF — класс для задания координат текста на странице PDF.
2. Базовый пример: добавление обычного текста в PDF
В этом примере загрузим существующий PDF-файл и добавим текст в заданную позицию на выбранной странице. Также настроим шрифт и цвет.
Для русского текста используется шрифт Arial с поддержкой кириллицы. Он должен быть установлен в системе.
from spire.pdf import (
PdfDocument,
PdfFontStyle,
PdfSolidBrush,
PdfRGBColor,
PointF,
PdfTrueTypeFont,
)
# Создаём объект PDF-документа и загружаем локальный файл
pdf = PdfDocument()
pdf.LoadFromFile("input.pdf")
# Получаем первую страницу PDF (индексация начинается с 0)
page = pdf.Pages.get_Item(0)
# Настраиваем шрифт: Arial, 16 пунктов, полужирное начертание
# Встраиваем шрифт в PDF
font = PdfTrueTypeFont("Arial", 16.0, PdfFontStyle.Bold, True)
# Создаём кисть светло-оранжевого цвета
brush = PdfSolidBrush(PdfRGBColor(255, 200, 180))
# Задаём координаты текста (в пунктах)
location = PointF(72.0, 300.0)
# Рисуем текст в указанной позиции
page.Canvas.DrawString("Это добавленный текст.", font, brush, location)
# Сохраняем изменённый PDF-файл
pdf.SaveToFile("Добавление_текста.pdf")
# Закрываем документ и освобождаем ресурсы
pdf.Close()
Основная логика кода: загрузка документа → выбор страницы → настройка шрифта и цвета → задание координат → добавление текста → сохранение документа и освобождение ресурсов.
3. Расширенные настройки оформления
Spire.PDF поддерживает различные настройки текста, позволяя адаптировать его оформление к требованиям документа. Рассмотрим выбор шрифтов, настройку цвета, прозрачности и поворота.
3.1. Выбор шрифта и настройка цвета
Библиотека предлагает три основных способа создания шрифтов: использование шрифтов CJK, системных шрифтов TrueType и встроенных стандартных шрифтов PDF. Цвет текста можно задать произвольными значениями RGB.
from spire.pdf import (
PdfTrueTypeFont,
PdfFont,
PdfFontFamily,
PdfFontStyle,
PdfSolidBrush,
PdfRGBColor,
)
# Способ 1: системный шрифт TrueType — Calibri,
# курсив, 16 пунктов, со встраиванием в PDF
font1 = PdfTrueTypeFont("Calibri«, 16.0, PdfFontStyle.Italic, True)
# Способ 2: встроенный стандартный шрифт PDF — Times Roman,
# курсив, 16 пунктов
font2 = PdfFont(PdfFontFamily.TimesRoman, 16.0, PdfFontStyle.Italic)
# Создаём кисть лесного зелёного цвета
brush = PdfSolidBrush(PdfRGBColor(34, 139, 34))
Встраивание шрифта помогает сохранить внешний вид текста при открытии PDF на других устройствах. Это особенно полезно для документов, которые будут просматриваться на разных компьютерах.
Для русского текста выбирайте шрифт TrueType с поддержкой кириллицы, например Arial или Calibri.
3.2. Настройка прозрачности текста
Метод SetTransparency() позволяет задать прозрачность текста. Это удобно для создания ненавязчивых водяных знаков и примечаний.
Значение параметра находится в диапазоне от 0.0 до 1.0: 0.0 означает полную прозрачность, а 1.0 — полную непрозрачность.
# Устанавливаем непрозрачность текста на уровне 0.4
page.Canvas.SetTransparency(0.4)
# Рисуем полупрозрачный текст
page.Canvas.DrawString(
«Полупрозрачный текст»,
font,
brush,
PointF(100.0, 100.0),
)
3.3. Поворот текста
Поворачивая систему координат холста, можно размещать текст под произвольным углом. Этот приём часто используется для диагональных водяных знаков и боковых подписей.
Отрицательное значение задаёт поворот против часовой стрелки, положительное — по часовой стрелке.
# Поворачиваем холст на 45 градусов против часовой стрелки
page.Canvas.RotateTransform(-45)
# Рисуем повёрнутый текст
page.Canvas.DrawString(
«Повёрнутый текст»,
font,
brush,
PointF(100.0, 100.0),
)
4. Что учитывать при разработке
- Освобождение ресурсов. После завершения работы вызывайте метод Close(), чтобы освободить ресурсы документа и избежать блокировки файлов и лишнего потребления памяти.
- Координаты. Координаты задаются в пунктах. Начало системы координат находится в левом верхнем углу страницы. Выбирайте позицию текста с учётом размеров страницы.
- Поддержка символов. Для китайского текста используйте PdfCjkStandardFont или подходящий системный шрифт. Для русского текста выбирайте шрифт с поддержкой кириллицы, чтобы избежать отсутствующих или некорректно отображаемых символов.
- Комбинирование стилей. Прозрачность, поворот и настройки шрифта можно сочетать для создания более сложных вариантов оформления.
5. Заключение
Spire.PDF for Python позволяет добавлять текст в PDF и настраивать его оформление без сложного кода. Библиотека поддерживает различные шрифты, произвольные цвета, полупрозрачный и повёрнутый текст .
Понятный API и гибкие настройки оформления делают её удобным инструментом для автоматического редактирования PDF, пакетной обработки документов и создания текстовых водяных знаков.