Как стать автором
Обновить

Преобразование markdown в pdf на Python

Уровень сложностиПростой
Время на прочтение1 мин
Количество просмотров6.3K

Каждому, кто ходил извилистой тропкой автоматической генерации pdf из markdown файлов ведомы связанные с этой задачей пеньки решения: Pandoc, LaTex, wkhtmltopdf и т.п.

Хочу поделиться с сообществом новым (по крайней мере для меня) вариантом решения этой задачи в Python.

Этот вариант имеет следующие плюсы.

  • Все зависимости в requrments.txt, никаких внешних бинарников.

  • Нет проблем с кириллицей, картинками и наиболее популярными элементами разметки.

  • Возможность использования разных размеров страниц внутри одного pdf.

  • Настраиваемый режим создания оглавления (bookmarks).

Данный способ основан на использовании библиотек markdown-it-py (md -> html) и PyMuPDF (html -> pdf). Связывает их между собой маленький класс Python.

Ставим:

pip install markdown-pdf

Создаем pdf с оглавлением (bookmarks) из заголовков до 2 уровня.

from markdown_pdf import MarkdownPdf

pdf = MarkdownPdf(toc_level=2)

Добавляем в pdf три секции markdown. Каждая секция начинается с новой страницы. Заголовки из первой секции не включаем в оглавление.

from markdown_pdf import Section

pdf.add_section(Section("# Title\n", toc=False))
pdf.add_section(Section("# Head1\n\nbody\n"))
pdf.add_section(Section("## Head2\n\n### Head3\n\n"))

Устанавливаем свойства pdf документа.

pdf.meta["title"] = "Руководство пользователя"
pdf.meta["author"] = "А.C.Пушкин"

Сохраняем в файл.

pdf.save("guide.pdf")

Благодарю за внимание.

Теги:
Хабы:
Если эта публикация вас вдохновила и вы хотите поддержать автора — не стесняйтесь нажать на кнопку
Всего голосов 8: ↑5 и ↓3+3
Комментарии11

Публикации

Истории

Работа

Python разработчик
115 вакансий
Data Scientist
79 вакансий

Ближайшие события

7 – 8 ноября
Конференция byteoilgas_conf 2024
МоскваОнлайн
7 – 8 ноября
Конференция «Матемаркетинг»
МоскваОнлайн
15 – 16 ноября
IT-конференция Merge Skolkovo
Москва
22 – 24 ноября
Хакатон «AgroCode Hack Genetics'24»
Онлайн
28 ноября
Конференция «TechRec: ITHR CAMPUS»
МоскваОнлайн
25 – 26 апреля
IT-конференция Merge Tatarstan 2025
Казань