Создание PDF из документации
Diplodoc может генерировать документацию в формате PDF.
Структура PDF-документа
PDF-документ состоит из трех частей:
-
Титульные страницы
Чтобы сформировать титульные страницы, настройте блок
startPagesвtoc.yaml:pdf: startPages: - path-to-page-1.md - path-to-page-2.md - path-to-page-n.mdВажно
Страницы из
pdf.startPagesне поддерживают локализацию черезyfm translate.Чтобы проверить верстку в браузере, используйте флаг
--pdf-debug. Он создаст HTML-версии страниц изstartPages. -
Оглавление
Diplodoc автоматически формирует оглавление на основе
toc.yaml. Каждый пункт в списке — это ссылка на страницу.Названия разделов, объединяющих группу статей, отображаются простым текстом.
Файлы с атрибутомhidden: trueвtoc.yamlне попадают в PDF. Чтобы включить их, установите параметрhiddenPolicy: false. -
Основной контент
В PDF поддерживаются все возможности Diplodoc:
- блоки Page Constructor;
- перекрестные ссылки;
- изображения и другие медиа-файлы.
Каждая следующая статья PDF-документа начинается с новой страницы.
Сборка
Настройка
-
В файле
toc.yamlдобавьте секциюstartPagesдля формирования титульных страниц. -
Включите поддержку PDF в файле конфигурации
.yfm:pdf: enabled: true
Генерация
-
Соберите проект документации:
yfm -i . -o ./docs-output --pdf-i .— путь к папке с исходниками (в примере — текущая папка);-o ./docs-output— путь к папке для результатов сборки.
-
Запустите генератор PDF:
npx -- @diplodoc/pdf-generator@latest -i ./docs-output
Примечание
Для каждого файла toc.yaml Diplodoc создает отдельный single-page.pdf. Статьи в PDF располагаются в том же порядке, что и в оглавлении.
Стилизация
Вы можете изменить внешний вид PDF-документа с помощью CSS-стилей.
Внимание
Стили, добавленные внутри Markdown-файлов, Diplodoc удаляет при генерации PDF — это сделано в целях безопасности.
Фильтрация контента
Чтобы показывать или скрывать элементы только в PDF-версии, используйте пресеты.
-
Добавьте нужную переменную в
presets.yaml:pdf: version: pdf -
Используйте условие в тексте:
{% if version == "pdf" %} Этот текст появится только в PDF-версии. {% endif %}