Автор оригинала: Mike Driscoll.
На днях у меня была интересная задача, которую мне нужно было в комплекте с ReportLab. Мне нужно было создать PDF в ландшафтной ориентации, которая должна была быть повернута на 90 градусов, когда я его спас. Чтобы облегчить выложить документ, я создал класс с флагом, который позволяет мне сохранить его в ландшафтной ориентации или перевернуть его в портрет. В этой статье мы посмотрим на мой код, чтобы увидеть, что нужно. Если вы хотите следовать, я бы порекомендовал загрузить копию ReportLab и pypdf (или pypdf2 ).
Ориентация страницы ReportLab
Есть как минимум два способа сообщить REPORTLAB для использования ландшафтной ориентации. Первый – это удобная функция называется Ландшафт что вы можете импортировать из ReportLab.lib.pageies Отказ Вы бы использовали это так:
Другой способ установить пейзаж просто установить размер страницы прямо:
Вы могли бы сделать это более универсальным, делая что-то подобное, хотя:
Это может иметь больше смысла, особенно если вы хотите использовать другие популярные размеры страниц, такие как A4. Теперь давайте найдя момент и посмотрим на полноценный пример:
Если вы запускаете код выше (и у вас есть логотип для использования), вы увидите что-то очень похожее на скриншот в начале статьи. Это облегчает пропустить документ, потому что текст и изображения горизонтальные. Давайте проведем несколько минут, разбирающихся код. В init Мы настроили несколько элементов, такие как логотип, имя файла PDF, следует ли вращать или нет и несколько других элементов. координат Метод – это то, что я нашел на Stackoverflow, который помогает более проще. create_pdf Метод – это большая часть магии. Это называет Ландшафт Функция, которую мы импортировали. Эта функция также рисует логотип, прямоугольник и слова на документе.
Следующий метод – это Сохранить метод. Если мы не сделаем вращение, мы создаем SimpleDoCteMplate, пропустите его имя файла PDF и построить документ. С другой стороны, если мы включаем вращение, то мы создаем файловый объект, используя библиотеку Stringio Python, чтобы мы могли манипулировать PDF в памяти. В основном мы пишем данные в память, то мы стремимся к началу файла FAUX, чтобы мы могли прочитать его с помощью pypdf. Далее мы создаем объект писателя PYPDF. Наконец, мы проходим через PDF, который на странице памяти по странице и поверните каждую страницу, прежде чем написать ее.
Последний способ – это просто удобный метод, который мне дали от группы WXPYPHON, которую я использую для масштабирования изображений. Большое время вы найдете себя с изображениями, которые слишком велики для ваших целей, и вам нужно будет масштабировать их, чтобы соответствовать. Это все этот метод.
Как только у вас есть все, где вы хотите, вы можете изменить код в конце следующего:
Это заставит скрипт сделать вращение, а выход должен выглядеть что-то подобное:
Упаковка
Создание и редактирование PDFS в ландшафтной ориентации на самом деле довольно легко сделать в Python и ReportLab. На данный момент вы должны быть в состоянии сделать это с APLOMB! Удачи и счастливые кодировки!
Статьи по теме
- ReportLab – О пользователе fonts
- Простой пошаговый учебник ReportLab
- ReportLab: Как добавить номера страниц
- Столы REPORTLAB – Создание таблиц в PDFS с Python
- ReportLab: Смешивание фиксированного контента и стопов