«Работает в браузере» — полезное утверждение, но это не полное заявление о конфиденциальности. Браузер может прочитать локальный файл без загрузки, но в то же время запросить десяток внешних изображений в момент формирования превью.
md2pdf — это статический сайт без бэкенда приложения. Парсинг Markdown, санитизация, генерация оглавления, предварительный просмотр, печать и верстка PDF-книг выполняются на устройстве пользователя. Это устраняет этап выгрузки на сторонний сервер, но не делает документ абсолютно невидимым для сети. Данное руководство точно определяет границы.
Общий рабочий процесс описан в статье Как преобразовать README с GitHub в PDF. Для сборки книг из нескольких глав см. Создание книги из нескольких Markdown-файлов.
Что здесь означает «только в браузере»
В md2pdf термин «только в браузере» означает отсутствие серверного рендерера. Сайт представляет собой статический HTML, CSS и JavaScript. При вставке текста он хранится только в памяти вкладки. При загрузке файла API File браузера читает его локально без отправки на сервер.
Это не означает, что страница работает автономно без сети. При первой загрузке загружаются ресурсы сайта, а импорт с GitHub делает сетевые запросы к публичному API GitHub.
Практическое обещание строго и прозрачно: ваш Markdown не загружается на серверы LadeStack, у нас нет учетных записей или серверного хранилища документов.
Пошаговый процесс обработки
Документ проходит следующие этапы:
source -> parse -> resolve -> render -> sanitize -> preview -> print
- Источник. Чтение вставленного текста, локального файла или публичного README с GitHub.
- Парсинг. markdown-it обрабатывает таблицы, списки задач и блоки кода GFM.
- Разрешение путей. Для репозитория относительные пути картинок ведут на raw.githubusercontent.com.
- Рендеринг. Преобразование токенов в HTML.
- Санитизация. DOMPurify удаляет опасные элементы (
script,iframeи др.). - Превью. Очищенный HTML вставляется на страницу с якорями заголовков и оглавлением.
- Вывод. Вызов печати браузера или сборка книги в ZIP с помощью pdf-lib.
Все этапы после считывания исходника происходят локально на вашем ПК.
Что покидает браузер
Для локальных файлов или вставленного текста md2pdf не передает содержимое документа во внешнюю сеть, так как у сайта нет принимающего API.
В обычном использовании происходят следующие сетевые обращения:
- Ресурсы сайта. Загрузка разметки, стилей, шрифтов и скриптов оформления.
- Импорт с GitHub. Анонимные запросы к GitHub API для получения README и публичных картинок.
- Внешние ресурсы в Markdown. Если в документе есть ссылки на сторонние изображения, браузер запросит их при рендеринге превью.
Например, если документ содержит , текст останется локальным, но запрос картинки уйдет на сторонний сервер.
Обычные ссылки не вызывают запросов до клика, но изображения загружаются сразу при формировании страницы.
Локальные файлы и вставка текста
Локальные сценарии обеспечивают максимальную приватность:
- Вставка текста. Текст не покидает вкладку, если в нем нет внешних картинок.
- Загрузка файла. Файл читается в памяти браузера в пределах 2 МБ и никуда не отправляется.
- Пример. Встроенный пример загружается из локального пакета сайта.
Относительные пути к локальным картинкам не сработают без базового репозитория. Используйте абсолютные URL или примите значок недоступной картинки.
Для полной автономности удалите ссылки на внешние изображения перед печатью.
Удаленные изображения и ссылки остаются сетевыми запросами
Клиентская обработка защищает текст документа, но не защищает ресурсы, на которые этот документ ссылается.
Рассмотрим пример:

See the [operations guide](https://example.test/ops).
При импорте с GitHub путь к картинке переписывается на сервер Raw-контента GitHub. При вставке текста абсолютный URL запрашивается напрямую с исходного сервера.
Перед экспортом конфиденциальных данных проверьте документ на наличие:
- Ссылок на изображения с
http://иhttps:// - HTML-тегов
<img> - Внешних стилей и шрифтов
- Data URI картинок (они не создают сетевого трафика)
DOMPurify удаляет скрипты, но сохраняет стандартные изображения как часть документа.
Ограничения GitHub и обработка сбоев
Импорт с GitHub — это анонимное чтение публичных данных с безопасными лимитами:
- Таймаут запроса к API 15 секунд.
- Таймаут загрузки глав 20 секунд.
- Лимит времени на сканирование дерева 25 секунд.
- Автоматический переход на прямое чтение Raw при исчерпании лимитов API.
- Отсутствующие картинки заменяются плейсхолдером без прерывания экспорта.
Практический чек-лист по безопасности
Перед печатью внутренних документов проверьте:
- В тексте нет ссылок на изображения во внутренней сети компании.
- Адрес публичного репозитория указан корректно.
- В документе отсутствуют токены, пароли и приватные ключи.
- Вы проверили макет в окне предварительного просмотра.
- Конвертация выполнена локально без обращения к облачным серверам.
Особенности оформления описаны в статье Сравнение тем оформления md2pdf.
Создайте свой PDF из README
Бесплатно, без регистрации и полностью в браузере.