Преобразование файлов формата Markdown в файлы PDF (совместимые с mermaid/emoji/toc)

Эта статья является переводом статьи マークダウン形式のファイルをPDFファイルに変換する(mermaid・emoji・toc対応).

Обзор

Я создал простой инструмент управления документами, чтобы удовлетворить спрос на конвертирование файлов формата Markdown в файлы PDF.

bmf-san/docs-md-to-pdf-example

Я не слишком много думал об этом, и я сделал его, используя библиотеку вещей, которые уже существовали, так что это структура, которая не кажется очень устойчивой.

Мотивация

Если вы просто хотите конвертировать файлы формата Markdown в файлы PDF, вы можете использовать библиотеку md-to-pdf.

Этой библиотеке я также обязан за управление своим резюме.
cf. Управление резюме на Github

Было желание поддержать русалочью нотацию и использовать пиктограммы, отличные от зарегистрированных в юникоде, поэтому я хотел создать соответствующую форму.

Это можно легко решить с помощью расширения vscode vscode-markdown-pdf, но vscode необходим, поэтому людям, зависящим от него, нужно установить vscode.

Я подумал, что использовать vscode только для конвертации — это глупость, поэтому я его реализовал.

дизайн

Библиотека md-to-pdf проста в использовании и замечательна, но в настоящее время следующие функции не поддерживаются стандартно.

  • русалочья нотация
  • эмодзи (кроме тех, что зарегистрированы в юникоде)
  • генерация TOC

md-to-pdf может расширять настройки markedjs/marked Поэтому, кажется, что все они могут быть реализованы путем настройки md-to-pdf.

Похоже, что планируется поддержка TOC.
Генерировать TOC (оглавление) #74

Я мог бы использовать md-to-pdf, но мне показалось, что это займет немного времени, поэтому я реализовал это как можно быстрее, как на хакатоне. Мне этого хотелось, поэтому я решил использовать библиотеку под названием md-to-pdf-ng.

Это библиотека, расширяющая md-to-pdf для поддержки русалочьей нотации. Ее можно использовать без проблем.

На основе md-to-pdf-ng, поддержка эмодзи осуществляется node-emojify, генерация TOC реализована с помощью библиотеки doctoc.

Реализация

Установите следующее с помощью npm.

  • md-to-pdf-ng
  • node-emojify
  • doctoc

*Textlint добавляется как дополнительная функция, но эта часть опущена.

Поддержка Emoji поддерживается расширением marked, поэтому подготовьте следующий конфигурационный файл.

const marked = require('marked');
const { emojiify } = require('node-emoji');

const renderer = new marked.Renderer();

renderer.text = emojiify;

module. exports = {
marked_options: { renderer },
};
Войти в полноэкранный режим Выйти из полноэкранного режима

Определите следующую команду в сценариях package.json.

doctoc --notitle md/ && md-to-pdf md/*.md --config-file config.js && mv md/*.pdf pdf/
Войти в полноэкранный режим Выйти из полноэкранного режима

Сначала генерируем TOC с помощью doctoc, затем конвертируем markdown в PDF и, наконец, перемещаем каталог.

Было бы неплохо иметь возможность указывать выходной пункт назначения pdf, сгенерированного md-to-pdf, в единицах каталогов, но, похоже, такой возможности нет, поэтому она решается простым способом mv md/*.pdf pdf pdf/ .

Впечатление

Если вы попытаетесь сделать что-то подобное, вы, как правило, будете полагаться на внешние библиотеки.
Если возможно, я бы хотел реализовать все сам, но думаю, что это довольно сложно.
Если у меня будет возможность, я бы хотел изучить структуру данных PDF и создать подобный CLI-инструмент на Go.

Оцените статью
devanswers.ru
Добавить комментарий