Преобразование 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/


Интересные статьи

Интересные статьи

Недавно Google изменил политику по отношению к доступу к аккаунту из неизвестных источников. Давно приходили предупреждения, но я до последнего надеялся, что обойдется и не коснется меня. Наивный.Дока...
Ранее я уже рассказывал о сужении типов с помощью isinstance(), assert и Literal. В сегодняшней заметке мы рассмотрим TypeGuard, новый специальный тип, который позволяет нам создавать кастомные функци...
Привет, Хаброжители! Когда речь идет о создании мощных и эффективных хакерских инструментов, большинство аналитиков по безопасности выбирают Python. Во втором издании бестселлера Black Hat Python вы ...
Привет, Хаброжители! Python — стремительно развивающийся язык программирования современности. В этом увлекательном и необычном руководстве материал разбивается на доступные пошаговые фра...
Планету Земля часто называют колыбелью жизни, и в этом титуле совсем мало преувеличений. Жизнь можно найти и в вечнозеленых тропиках, и в знойных пустынях, и на бескрайних ледяных про...