Эта статья является переводом Преобразование файлов формата Markdown в файлы PDF (совместимые с русалкой/эмодзи/toc).

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

* Текстовая подсказка добавлена ​​дополнительно, но эта часть опущена.

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

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/
Войти в полноэкранный режим

Выйти из полноэкранного режима

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

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

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