Convert Markdown to a styled, Chinese-friendly A4 PDF with QA previews.
Project description
md2pdf
Markdown 转 PDF 工具,专为中文文档优化:
- Pandoc 把 Markdown 转成带目录的 HTML。
md2pdf/style.css负责中文字体、封面、目录、标题、引用块、表格和分页样式。- Playwright / headless Chrome 把 HTML 打印成 A4 PDF。
- PyMuPDF + Pillow 渲染 QA 图片和
summary.txt,用于检查页数、页面尺寸、乱码和抽检页面。
安装
需要先准备两个系统依赖(pip 无法安装):
- pandoc:
brew install pandoc(macOS)/apt install pandoc(Debian/Ubuntu)。 - 浏览器:装好 Python 包后运行
playwright install chromium,让 Playwright 下载自带的 Chromium;macOS 上若已装 Google Chrome 也可直接复用。
然后安装本工具。发布名是 md2pdf-tool(PyPI 上 md2pdf 已被占用),命令仍是 md2pdf。
已发布后,最终用户二选一:
# Homebrew(个人 tap)
brew install <用户名>/md2pdf/md2pdf
playwright install chromium
# 或 pipx
pipx install md2pdf-tool
playwright install chromium
从源码安装 / 开发:
pipx install . # 从仓库目录安装,得到全局 md2pdf 命令
# 或可编辑安装:
python -m venv .venv && source .venv/bin/activate
pip install -e .
playwright install chromium
发布到 PyPI 和搭建 Homebrew tap 的完整步骤见 PUBLISHING.md。
使用
安装后直接用 md2pdf 命令:
md2pdf docs/requirements.md
不传输出路径时,默认输出到同目录同名 .pdf;不传 --title 时,默认用文件名。
也可以用 gen_pdf.sh 包装脚本——它会自动读取 Markdown 第一个一级标题作为封面标题:
./gen_pdf.sh docs/requirements.md docs/requirements.pdf
./gen_pdf.sh --dry-run docs/requirements.md # 只打印将要执行的命令
需要手动指定标题、副标题、日期或必检文本时,传对应参数:
md2pdf docs/requirements.md \
--output docs/requirements.pdf \
--title "4D交互式电子手册平台需求说明" \
--subtitle "面向大型企业私有化部署的创作、发布、播放与反馈闭环系统" \
--date "2026-06-03" \
--required-text "十八、最终一句话目标"
未安装时,也可以从仓库根目录用模块方式运行(需 pip install -e . 或设置 PYTHONPATH=src):
python -m md2pdf.build_pdf path/to/input.md --output path/to/output.pdf
输出
生成后会输出(以 requirements 为例):
- PDF:
docs/requirements.pdf - 中间 HTML:
<build-dir>/requirements.html - QA 摘要:
<build-dir>/qa/summary.txt - 页面抽检图和缩略图:
<build-dir>/qa/*.png
<build-dir> 默认放在输出 PDF 旁边的 .build/<stem>/(用户可写,不会写进只读的安装目录)。需要指定别处时用 --build-dir,例如 --build-dir ./.md2pdf-build。
依赖
pandoc- Python 包:
playwright、PyMuPDF(fitz)、Pillow(随pip install自动安装) - Google Chrome 或 Playwright Chromium
Pandoc 可能提示 Could not load translations for zh-CN,这不影响中文内容生成和 PDF 文本提取。
测试
pip install -e .
python -m unittest discover -s tests -v
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file md2pdf_tool-0.1.0.tar.gz.
File metadata
- Download URL: md2pdf_tool-0.1.0.tar.gz
- Upload date:
- Size: 14.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
6dbe7dd8e180a11aeca2ba65f7c0ff0170c72a1002cb3eb7c51b49ce75498821
|
|
| MD5 |
f57cf47229b43f6532cdbe5fe4cce7d1
|
|
| BLAKE2b-256 |
70db443cc03e5d49a0f20e16623535955ecea2ee73b515810319c0f0a8dbb083
|
File details
Details for the file md2pdf_tool-0.1.0-py3-none-any.whl.
File metadata
- Download URL: md2pdf_tool-0.1.0-py3-none-any.whl
- Upload date:
- Size: 10.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
cc54902fd9f35af3b55519865b22762365ec8c50c3884168760cadf697602a5d
|
|
| MD5 |
345ecdf31cc9bf51b1eb1608508284a3
|
|
| BLAKE2b-256 |
4e3a213927189ff2cde4eedf541dcb5080c291b95a404b0836e1f1cebd1ac4d6
|