Claude-code-skills pdf-creator

Create PDF documents from markdown with proper Chinese font support. Supports theme system (default for formal docs, warm-terra for training materials) and dual backend (weasyprint or Chrome). Triggers include "convert to PDF", "generate PDF", "markdown to PDF", or any request for creating printable documents.

install
source · Clone the upstream repo
git clone https://github.com/daymade/claude-code-skills
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/daymade/claude-code-skills "$T" && mkdir -p ~/.claude/skills && cp -r "$T/suites/daymade-docs/pdf-creator" ~/.claude/skills/daymade-claude-code-skills-pdf-creator && rm -rf "$T"
manifest: suites/daymade-docs/pdf-creator/SKILL.md
source content

PDF Creator

Create professional PDF documents from markdown with Chinese font support and theme system.

Quick Start

# Default theme (formal: Songti SC + black/grey)
uv run --with weasyprint scripts/md_to_pdf.py input.md output.pdf

# Warm theme (training: PingFang SC + terra cotta)
uv run --with weasyprint scripts/md_to_pdf.py input.md --theme warm-terra

# No weasyprint? Use Chrome backend (auto-detected if weasyprint unavailable)
python scripts/md_to_pdf.py input.md --theme warm-terra --backend chrome

# List available themes
python scripts/md_to_pdf.py --list-themes dummy.md

Themes

Stored in

themes/*.css
. Each theme is a standalone CSS file.

ThemeFontColorBest for
default
Songti SC + Heiti SCBlack/greyLegal docs, contracts, formal reports
warm-terra
PingFang SCTerra cotta (#d97756) + warm neutralsCourse outlines, training materials, workshops

To create a new theme: copy

themes/default.css
, modify, save as
themes/your-theme.css
.

Backends

The script auto-detects the best available backend:

BackendInstallProsCons
weasyprint
pip install weasyprint
Precise CSS rendering, no browser neededRequires system libs (cairo, pango)
chrome
Google Chrome installedZero Python deps, great CJK supportLarger binary, slightly less CSS control

Override with

--backend chrome
or
--backend weasyprint
.

Batch Convert

uv run --with weasyprint scripts/batch_convert.py *.md --output-dir ./pdfs

Troubleshooting

Chinese characters display as boxes: Ensure Chinese fonts are installed (Songti SC, PingFang SC, etc.)

weasyprint import error: Run with

uv run --with weasyprint
or use
--backend chrome
instead.

CJK text in code blocks garbled (weasyprint): The script auto-detects code blocks containing Chinese/Japanese/Korean characters and converts them to styled divs with CJK-capable fonts. If you still see issues, use

--backend chrome
which has native CJK support. Alternatively, convert code blocks to markdown tables before generating the PDF.

Chrome header/footer appearing: The script passes

--no-pdf-header-footer
. If it still appears, your Chrome version may not support this flag — update Chrome.