Создание 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-документа начинается с новой страницы. Статьи в PDF располагаются в том же порядке, что и в оглавлении.
Сборка
Настройка
-
В файле
toc.yamlдобавьте секциюstartPagesдля формирования титульных страниц. -
Включите поддержку PDF в файле конфигурации
.yfm:pdf: enabled: true
Генерация
-
Соберите проект документации:
yfm -i . -o ./docs-output --pdf-i .— путь к папке с исходниками (в примере — текущая папка);-o ./docs-output— путь к папке для результатов сборки;--pdf— флаг, включающий подготовку данных для генерации PDF; если поддержка PDF включена в.yfm, флаг передавать не требуется.
-
Запустите генератор PDF:
npx -- @diplodoc/pdf-generator@latest -i ./docs-output
Примечание
Для каждого файла toc.yaml Diplodoc создает отдельный single-page.pdf.
Стилизация
Вы можете изменить внешний вид PDF-документа с помощью CSS-стилей.
Внимание
Стили, добавленные внутри Markdown-файлов, Diplodoc удаляет при генерации PDF — это сделано в целях безопасности.
Фильтрация контента
Чтобы показывать или скрывать элементы только в PDF-версии, используйте пресеты.
-
Добавьте нужную переменную в
presets.yaml:pdf: version: pdf -
Используйте условие в тексте:
{% if version == "pdf" %} Этот текст появится только в PDF-версии. {% endif %}