← ClaudeAtlas

markdown-to-pdflisted

当需要用 Python 将 Markdown 转为 PDF,并保留表格、代码块、图片路径和基础 CSS 样式时使用。
black-yt/skills · ★ 10 · Data & Documents · score 65
Install: claude install-skill black-yt/skills
# Markdown 转 PDF ## 使用场景 将 Markdown 文件转为 PDF。脚本会先用 `markdown2` 转 HTML,再用 `WeasyPrint` 输出 PDF。 ## 依赖安装 ```bash pip install markdown2 weasyprint ``` `WeasyPrint` 可能还需要系���图形/字体相关依赖。如果运行时报 Cairo、Pango、fontconfig 等错误,按 WeasyPrint 官方文档补齐系统依赖。 检查: ```bash python -c "import markdown2; from weasyprint import HTML; print('md2pdf deps ok')" ``` ## 源码追溯 - Markdown 转 HTML 和 HTML 转 PDF 的行为分别由 `markdown2` 和 `WeasyPrint` 决定;表格、代码块、图片路径、字体或 CSS 问题不确定时,先查看当前安装版本源码。 - `module.__file__` 可定位安装路径。 - `inspect.getsource(...)` 可查看关键函数或类。 - 源码只用于阅读和定位问题,不要改源码,不要直接改 `site-packages`;优先调整本仓库脚本的参数、CSS 或 wrapper。 ```bash python - <<'PY' import inspect import markdown2 import weasyprint from weasyprint import HTML print("markdown2:", getattr(markdown2, "__version__", "unknown"), markdown2.__file__) print("weasyprint:", getattr(weasyprint, "__version__", "unknown"), weasyprint.__file__) print(inspect.getsource(markdown2.markdown)) print(inspect.getsource(HTML.write_pdf)) PY ``` ## 脚本 优先使用 bundled script: ```text scripts/md_to_pdf.py ``` ## 命令行用法 基本用法: ```bash python scripts/md_to_pdf.py input.md output.pdf ``` 指定输出目录: ```bash python scripts/md_to_pdf.py input.md output_dir ``` 指定图片和相对资源的起始路径。第三个参数会作为 WeasyPrint 的 `base_url`,用于解析 Markdown 中的相对图片路径、CSS 和本地资源: ```bash python scripts/md_to_pdf.py input.md output.pdf /path/to/base_dir ``` 如果 Markdown 中有相对图片路径,例如 `![figure](images/fig1.png)`,把第三个参数设为 Markdown 资源所在目录。不要把第三个参数设成某���图片文件本身。 ## Python 调用 ```python from scripts.md_to_pdf import