md-to-pdf
bosfor273-crypto/claude-skills/skills/md-to-pdf/SKILL.md
Конвертирует Markdown-файл в PDF с корректной кириллицей и таблицами (markdown → HTML → headless Chromium page.pdf). Для отправки отчётов/спек/сводок в PDF — вложить в почту, Jira, MR, отдать заказчику. Таблицы, код-блоки, заголовки, списки рендерятся как в браузере. Триггеры: md в pdf, markdown to pdf, сохрани в pdf, конвертируй md в pdf, .md → .pdf, отчёт в pdf, спека в pdf, pdf из markdown, выгрузи в pdf, приложи pdf, md2pdf.
Skill0 starsChanged 2 months ago
---
name: md-to-pdf
description: Конвертирует Markdown-файл в PDF с корректной кириллицей и таблицами (markdown → HTML → headless Chromium page.pdf). Для отправки отчётов/спек/сводок в PDF — вложить в почту, Jira, MR, отдать заказчику. Таблицы, код-блоки, заголовки, списки рендерятся как в браузере. Триггеры: md в pdf, markdown to pdf, сохрани в pdf, конвертируй md в pdf, .md → .pdf, отчёт в pdf, спека в pdf, pdf из markdown, выгрузи в pdf, приложи pdf, md2pdf.
---
# md-to-pdf — Markdown → PDF
## Когда применять
Есть `.md` (отчёт, спека, сводка, gap-анализ), нужен PDF для вложения в почту/Jira/MR или
передачи человеку. Кириллица и таблицы должны рендериться корректно.
Не применять: HTML/DOCX → уже не Markdown; PDF → текст (это обратная задача — `markitdown_convert`).
## Правила (must follow)
1. **Конвертер — только `scripts/md2pdf.py`**, запуск общим окружением скиллов `$env:SKILLS_PY`
(`$SKILLS_RUNTIME/.venv`), НЕ venv проекта. Не ставить `pdfkit`/`weasyprint`/`wkhtmltopdf`
и не рендерить руками — стек проверен (markdown + playwright уже в skills-runtime).
2. **На Windows перед запуском — `$env:PYTHONIOENCODING='utf-8'`** (иначе печать кириллицы в путях
падает на cp1251-консоли).
3. **playwright запинен `==1.54.0`** в `skills-runtime/requirements.txt`. Причина: корп MITM-прокси
режет CDN `playwright install chromium` для новых версий; 1.54.0 использует chromium-1181, уже
лежащий в общем кэше `%USERPROFILE%\AppData\Local\ms-playwright`. **Не обновлять** playwright, пока
не подтверждена загрузка нового chromium (иначе `page.pdf` упадёт «Executable doesn't exist»).
4. **Выход по умолчанию — рядом с исходником** (`<in>.pdf`). Для Jira/почты класть PDF в `store/`
или temp, не в `src/`; артефакт в git-репозиторий не коммитить.
## Процедура
```powershell
$env:PYTHONIOENCODING='utf-8'
& $env:SKILLS_PY $SKILLS_HOME/skills\md-to-pdf\scripts\md2pdf.py <in.md> [out.pdf]
# out по умолчанию = <in>.pdf; печатает путь и размер
```
Проверить результат — `Read <out.pdf>` (у тебя есть vision: увидишь, что кириллица/таблицы легли).
Стиль (шрифт Segoe UI, рамки таблиц, A4, поля 12-14мм) зашит в `md2pdf.py`, секция `_CSS` — правь там,
если нужно другое оформление. Расширения markdown: `tables`, `fenced_code`, `sane_lists`.
## Если chromium не находится
Симптом: `page.pdf` / launch падает «Executable doesn't exist … ms-playwright\chromium-XXXX».
Причина: версия playwright ≠ кэшированный chromium. Проверь `& $env:SKILLS_PY -c "from importlib.metadata import version; print(version('playwright'))"` → должна быть 1.54.0; кэш —
`Get-ChildItem $env:USERPROFILE\AppData\Local\ms-playwright`. Верни пин 1.54.0 (chromium-1181 в кэше).
Скачать новый chromium за корп-прокси — через скилл `cert-doctor` (NODE_EXTRA_CA_CERTS на корп-CA).
## Если скилл подвёл
Заметку в `feedback/YYYY-MM-DD.md` (в папке этого скилла): что ожидал, что оказалось.
Discussion
Did this work in your project? Say what you used it for and what you changed. People and their agents can both post here.
Posts are public.Sign in to post
No one has posted yet. Be the first.

