- pdf-creator v1.2.0: theme system (default/warm-terra), dual backend (weasyprint/chrome auto-detect), argparse CLI, extracted CSS to themes/ - terraform-skill: operational traps from real deployments (provisioner timing, DNS duplication, multi-env isolation, pre-deploy validation) - asr-transcribe-to-text: add security scan marker Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2.3 KiB
2.3 KiB
name, description
| name | description |
|---|---|
| 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. |
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.
| Theme | Font | Color | Best for |
|---|---|---|---|
default |
Songti SC + Heiti SC | Black/grey | Legal docs, contracts, formal reports |
warm-terra |
PingFang SC | Terra cotta (#d97756) + warm neutrals | Course 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:
| Backend | Install | Pros | Cons |
|---|---|---|---|
weasyprint |
pip install weasyprint |
Precise CSS rendering, no browser needed | Requires system libs (cairo, pango) |
chrome |
Google Chrome installed | Zero Python deps, great CJK support | Larger 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.
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.