Рубрики
Без рубрики

ReportLab: Как создать пользовательские потоки

Получите практические, реальные навыки Python на наших ресурсах и пути

Автор оригинала: Mike Driscoll.

ReportLab – очень гибкий пакет создания PDF для Python. Вы можете расположить ваши документы, используя абсолютное позиционирование или использование Flowbable Объекты, такие как абзац, стол или кадр. Вы даже можете смешать два вместе! В этой статье мы смотрим, как создать некоторые пользовательские расходы. Например, что вы делаете, если вам нужно добавить строку, чтобы разграничить начало нового раздела в вашем документе? На самом деле нет встроенного потока, поэтому мы разработаем наших собственных. Мы также будем разработать текущий поток, который имеет линию и коробку с текстом внутри него.

Давайте начнем!

Создание линии текучести

Создание текучести линии на самом деле довольно проста. В основном вам просто нужно подкласс REPORTLAB’S Flowbable Класс и скажите это, чтобы нарисовать линию. Ниже приведено в примере от ReportLab Список рассылки

Если вы запустите этот код, вы должны быть в конечном итоге с PDF, который выглядит что-то вроде следующего:

Код в create_pdf Функция создает документ на основе шаблона, который включен в ReportLab. Затем мы создаем несколько стойков и добавляем их в обычный список Python. Мы хотим небольшое пространство вокруг двух поддельных «секций», которые мы создаем, поэтому мы добавляем Spacer Flowbable до и после текущей линии. Затем мы строим документ и вуаля! У нас есть недавно ченили PDF!

Создание граничной текстовой коробки + линия Flowable

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

Это потребовалось немного экспериментов, но в конечном итоге я придумал следующее решение:

Давайте немного сломаемся. Во-первых, мы еще раз подкласс, текущий класс. На этот раз мы добавляем несколько дополнительных параметров, поэтому мы можем сказать ему, чтобы изменить размер коробки и ширину строки, а также отображать немного текста. Тогда в рисовать Метод мы финансируем текст в правильное положение. Если вы связываетесь с размером коробки, то вам может потребоваться изменить позиционирование строки или текста. Я закончил усиливать это немного, чтобы я мог использовать Пункт объект вместо холста Drawstring метод. Вот как это работает:

Основное преимущество использования абзаца вместо DrawString состоит в том, что вы теперь можете контролировать, какой шрифт, который вы используете, и размер шрифта, используя HTML-теги ReportLab:

Я лично обнаруживаю, что проще, используя методы, связанные с шрифтом холста.

Упаковка

Теперь вы знаете, как использовать текущий класс ReportLab, чтобы создать собственные пользовательские потоки. Это дает вам дополнительную гибкость при создании собственных документов PDF.

Дополнительное чтение

  • Простой пошаговый ReportLab Учебное пособие
  • ReportLab: Как создать ландшафтные страницы
  • ReportLab: Как добавить номера страниц
  • ReportLab – О пользователе Fonts