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

от автора

Каждому, кто ходил извилистой тропкой автоматической генерации 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")

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


ссылка на оригинал статьи https://habr.com/ru/articles/765136/


Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *