- Как использовать Python для создания и работы с PDF-файлами
- Библиотека PyPDF2
- Чтение PDF-файлов
- Создание PDF-файлов
- Библиотека ReportLab
- Создание PDF-файлов
- Рисование графики
- Создание PDF при помощи PyFPDF и Python
- Установка
- Базовое использование
- Работа со шрифтами
- Как быстро создать PDF-файл с помощью Python
- Как создать PDF-файл с помощью Python
- Шаг 1. Создание HTML-шаблона с заполнителями
- Шаг 2. Создание переменной Python для каждого заполнителя
- Шаг 3. Создание среды для шаблона и экспорт PDF-файла
Как использовать Python для создания и работы с PDF-файлами
Освойте основы создания и работы с PDF-файлами в Python с помощью популярных библиотек PyPDF2 и ReportLab для успешных проектов.
В этой статье мы рассмотрим, как использовать Python для создания и работы с PDF-файлами. PDF (Portable Document Format) является одним из самых популярных форматов для обмена документами, поэтому знание того, как работать с ними с помощью Python, может быть очень полезным.
Библиотека PyPDF2
Для работы с PDF-файлами в Python существует множество библиотек, но одной из самых популярных и широко используемых является PyPDF2. Чтобы установить ее, выполните следующую команду:
Чтение PDF-файлов
Для чтения содержимого PDF-файла с помощью PyPDF2 используйте следующий код:
import PyPDF2 pdf_file = open('example.pdf', 'rb') # Открываем файл в режиме чтения бинарных данных pdf_reader = PyPDF2.PdfFileReader(pdf_file) # Создаем объект PdfFileReader num_pages = pdf_reader.numPages # Получаем количество страниц в файле for page in range(num_pages): pdf_page = pdf_reader.getPage(page) # Получаем страницу print(pdf_page.extractText()) # Выводим текст страницы pdf_file.close() # Закрываем файл
Создание PDF-файлов
PyPDF2 также позволяет создавать PDF-файлы. Для этого используйте следующий код:
from PyPDF2 import PdfFileWriter, PdfFileReader pdf_writer = PdfFileWriter() # Создаем объект PdfFileWriter # Создаем текстовую страницу pdf_page = pdf_writer.addBlankPage(612, 792) # Добавляем пустую страницу с заданными размерами pdf_page.setFont("Helvetica", 12) # Устанавливаем шрифт и размер pdf_page.drawString(100, 700, "Пример текста на странице") # Добавляем текст на страницу # Сохраняем созданный PDF-файл with open('new_example.pdf', 'wb') as pdf_file: pdf_writer.write(pdf_file)
Библиотека ReportLab
Еще одной популярной библиотекой для работы с PDF-файлами в Python является ReportLab. Она предоставляет больше возможностей для создания и редактирования PDF-файлов. Чтобы установить ее, выполните следующую команду:
Создание PDF-файлов
Создание PDF-файла с помощью ReportLab:
from reportlab.pdfgen import canvas pdf_file = canvas.Canvas("reportlab_example.pdf") # Создаем объект Canvas pdf_file.setFont("Helvetica", 12) # Устанавливаем шрифт и размер pdf_file.drawString(100, 700, "Пример текста на странице") # Добавляем текст на страницу pdf_file.save() # Сохраняем созданный PDF-файл
Рисование графики
ReportLab также позволяет рисовать графические объекты на PDF-страницах:
from reportlab.pdfgen import canvas pdf_file = canvas.Canvas("reportlab_graphics_example.pdf") # Создаем объект Canvas # Рисуем прямоугольник pdf_file.setFillColorRGB(1, 0, 0) # Задаем цвет заливки pdf_file.rect(100, 600, 200, 100, fill=1) # Рисуем прямоугольник с заданными координатами и размерами # Рисуем эллипс pdf_file.setFillColorRGB(0, 1, 0) # Задаем цвет заливки pdf_file.ellipse(100, 400, 300, 500, fill=1) # Рисуем эллипс с заданными координатами и размерами pdf_file.save() # Сохраняем созданный PDF-файл
Теперь вы знаете основы работы с PDF-файлами в Python с использованием библиотек PyPDF2 и ReportLab. Эти библиотеки предоставляют множество функций для создания, редактирования и анализа PDF-файлов, которые могут быть полезными для ваших проектов. Удачного изучения и применения этих инструментов! 😉
Создание PDF при помощи PyFPDF и Python
ReportLab – это основной инструмент, который я использую для создания PDF с нуля. Однако, я заметил, что есть еще один — PyFPDF или FPDF для Python. Пакет PyFPDF – это порт «бесплатного» пакета PDF, который написан на PHP. Релиза этого проекта не было несколько лет, однако есть движения в его репозитории на Github, так что работа над проектом ведется. Пакет PyFPDF поддерживает Python 2.7 и Pyhton 3.4+.
Есть вопросы по Python?
На нашем форуме вы можете задать любой вопрос и получить ответ от всего нашего сообщества!
Telegram Чат & Канал
Вступите в наш дружный чат по Python и начните общение с единомышленниками! Станьте частью большого сообщества!
Одно из самых больших сообществ по Python в социальной сети ВК. Видео уроки и книги для вас!
В данной статье не будет утомительных разборов пакета PyFPDF. Однако, мы раскроем более чем исчерпывающую информацию для эффективного использования. Обратите внимание на то, что существует небольшая книжечка «Python и PDF: pyFPDF» от Эдвуда Оказио на Leanpub, если вы захотите узнать больше о библиотеке, сверх той информации, которая указана в данной статье или документации пакета.
Установка
Установка PyFPDF – это просто, так как он подразумевает работу с pip. Установка проходит следующим образом:
На момент написания, эта команда устанавливала версию 1.7.2 на Python 3.6 без каких-либо проблем. Во время установки вы увидите, что этот пакет не имеет зависимостей, что приятно.
Базовое использование
Теперь, когда у вас есть установленный PyFPDF, попробуем использовать его для создания простого файла PDF. Откройте ваш редактор Python и создайте новый файл под названием **simple_demo.py**. После этого, введите следующий код:
Первый элемент, который нам нужно обсудить, это импорт. Здесь мы импортируем класс FPDF из пакета fpdf. Настройки по умолчанию этого класса создают PDF в режиме Portrait, используя миллиметры в качестве единицы измерения и размер страницы А4. Если вы хотите быть четче, вы можете вписать следующую строку установки:
Я не фанат использования буквы «P», чтобы указать классу, какая это ориентация. Вы можете использовать «L», если предпочитаете пейзаж вместо портрета.
Пакет PyFPDF поддерживает supports ‘pt’, ‘cm’ и ‘in’ в качестве альтернативных единиц измерения. Если обратиться к источнику, вы увидите, что пакет PyFPDF поддерживает только следующие размеры страниц:
Это выглядит немного ограниченно, в сравнении с ReportLab, где у вас в распоряжении несколько дополнительных размеров поддерживаемых изначально, кроме этого, вы можете указать собственный размер страницы, если вам это нужно.
В любом случае, следующий шаг – это создание страницы при помощи метода add_page. Далее, мы указываем шрифт при помощи метода set_font. Вы увидите, что мы передаем родительское наименование шрифта и размер, которые нам нужны. Вы также можете настроить стиль шрифта при помощи аргумента style. Если вы хотите сделать это, помните, что для этого нужна строка, такая как «В» для жирного шрифта, или «Bl» для полужирного.
Далее, мы создаем клетку, шириной 200 миллиметров и 10 миллиметров в высоту. Клетка, по большому счету, плавающая, и содержит текст, к ней можно подключить границы. Она разделяется автоматически, если включен автоматический разрыв страницы, так что клетка перейдет за границу страницы. Параметр txt – это текст, который вам нужно ввести в PDF. Параметр In указывает PyFPDF, что нужно добавить разрыв строки, если он указан как 1, что мы и делаем в нашей статье. Наконец, мы можем установить выравнивание текста по ширине (по умолчания), или по центру («С»). Здесь мы выбираем второй вариант.
Наконец, мы сохраняем документ на диск, вызывая метод output с путем к файлу, который мы хотим сохранить.
После запуска кода, мой PDF выглядит следующим образом:
Давайте попробуем узнать побольше о работе PyFPDF со шрифтами.
Работа со шрифтами
PyFPDF содержит набор базовых шрифтов, старательно прописанных в класс FPDF:
Как быстро создать PDF-файл с помощью Python
PDF — пожалуй, один из самых распространенных типов компьютерных файлов. PDF-файлы используются для составления резюме, отчетов, счетов и много чего еще!
Обычный способ создания PDF-файла — сохранение Word-файла в формате .pdf . Однако создать PDF-файл можно и с помощью Python.
Какие у этого способа плюсы? Возможность иметь несколько PDF-файлов, созданных с использованием одного и того же шаблона!
В этом гайде я сначала расскажу, как создать простой PDF-файл с помощью Python, а затем покажу, как получать более сложные файлы, похожие на приведенный ниже.
Как создать PDF-файл с помощью Python
Существуют различные способы создания PDF-файла с помощью Python, но самым простым мне показалось использование HTML-шаблонов.
Этот вариант позволяет создавать базовые и продвинутые PDF-файлы за несколько минут!
Для создания PDF-файла понадобится установить следующие библиотеки:
pip install pdfkit
pip install jinja2
Перед использованием библиотеки pdfkit необходимо установить wkhtmltopdf . Порядок установки зависит от вашей операционной системы:
# macOS (сначала необходимо установить brew) brew install homebrew/cask/wkhtmltopdf # Ubuntu sudo apt-get install wkhtmltopdf
Если вы работаете на Windows, загрузите программу установки отсюда.
Теперь создадим простой PDF-файл с помощью Python.
Шаг 1. Создание HTML-шаблона с заполнителями
Сначала нужно создать HTML-документ, который в дальнейшем будет использоваться в качестве шаблона.
Для создания HTML-документа воспользуемся сайтом под названием HTML Editor. На этом сайте можно вводить текст в визуальном редакторе слева и генерировать его HTML-код в редакторе исходного текста справа.
Вот текст, который я ввел в редакторе (этот файл можно найти на GitHub).
Обратите внимание на заполнители, которые я создал с помощью > . Позже мы введем значения внутри этих фигурных скобок с помощью Python.
Вот HTML-код, который был сгенерирован HTML-редактором:
Нужно скопировать этот HTML-код, создать HTML-файл в рабочем каталоге и вставить в него этот код.
Шаг 2. Создание переменной Python для каждого заполнителя
Сначала импортируем jinja2 и pdfkit. Поскольку у меня есть заполнитель с именем > , я также импортирую datetime , чтобы получить сегодняшнюю дату.
Затем создадим переменную Python для каждого заполнителя в HTML-документе и словарь, который сопоставляет заполнители с переменными Python.
import jinja2
import pdfkit
from datetime import datetime
my_name = "Frank Andrade"
item1 = "TV"
item2 = "Couch"
item3 = "Washing Machine"
today_date = datetime.today().strftime("%d %b, %Y")
context = 'today_date': today_date>
Обратите внимание, что я назвал каждую переменную Python так же, как и заполнители, но они могут иметь разные имена.
Шаг 3. Создание среды для шаблона и экспорт PDF-файла
Теперь пришло время использовать jinja2 для создания среды для шаблона.
template_loader = jinja2.FileSystemLoader(‘./’)
template_env = jinja2.Environment(loader=template_loader)
Затем указываем используемый шаблон. Я назвал HTML-файл basic-template.hmtl . После этого рендерим словарь, созданный в шаге 2.
template = template_env.get_template(‘basic-template.html’)
output_text = template.render(context)
Теперь добавим wkhtmltopdf в конфигурацию pdfkit . Для этого нужно указать путь, по которому был установлен wkhtmltopdf .
Вот команда, которую нужно выполнить, чтобы получить этот путь:
# macOS/Linux >>> which wkhtmltopdf '/usr/local/bin/wkhtmltopdf' # Windows >>> where wkhtmltopdf 'C:\Program Files\wkhtmltopdf'
Наконец, экспортируем PDF файл, используя метод .from_string() .
template_loader = jinja2.FileSystemLoader('./')
template_env = jinja2.Environment(loader=template_loader)
template = template_env.get_template('basic-template.html')
output_text = template.render(context)
config = pdfkit.configuration(wkhtmltopdf='/usr/local/bin/wkhtmltopdf')
pdfkit.from_string(output_text, 'pdf_generated.pdf', configuration=config, css='style.css')
Обратите внимание, что я добавил параметр CSS в метод .from_string() . Это необязательно, но я счел необходимым увеличить размер шрифта абзацев в PDF-файле.
В рабочем каталоге я создал файл style.css и написал приведенный ниже код.
Вот PDF-файл, который мы создали с помощью Python:
Код и файлы, использованные в этом руководстве, можно найти на GitHub.
Теперь, чтобы сгенерировать более продвинутый PDF-файл, такой как инвойс ниже, нужно загрузить HTML-шаблон и создать заполнители. В этом видеоуроке я показываю, как это сделать.