Skip to main content

Batch Markdown to PDF converter using Pandoc + Tectonic + Mermaid-CLI

Project description

MD2PDF Pro

批量Markdown转PDF转换器 | Batch Markdown to PDF Converter

PyPI Version Python Versions License


功能特性

  • Markdown转PDF - 支持单文件或批量转换
  • Mermaid图表 - 自动渲染Mermaid代码块为PDF图片
  • LaTeX数学公式 - 原生支持数学公式渲染
  • 代码高亮 - 多语言语法高亮
  • 中文排版 - 完整的中文支持
  • 并行处理 - 高效批量转换
  • 文件监控 - 自动监听文件变化并转换

安装

1. 安装Python包

pip install md2pdf-pro

或从源码安装:

git clone https://github.com/one1d/md2pdf-pro.git
cd md2pdf-pro
pip install -e .

2. 安装系统依赖

macOS:

brew install pandoc tectonic graphviz librsvg node
npm install -g @mermaid-js/mermaid-cli

Linux (Ubuntu/Debian):

sudo apt-get install pandoc texlive-base graphviz librsvg2-bin nodejs npm
sudo npm install -g @mermaid-js/mermaid-cli
# 安装 Tectonic: https://tectonic.typesafe.org/

Windows:

# 安装 Chocolatey
choco install pandoc graphviz nodejs
# 安装 Tectonic: https://tectonic.typesafe.org/
# 安装 Mermaid-CLI: npm install -g @mermaid-js/mermaid-cli

3. 验证安装

md2pdf doctor

快速开始

单文件转换

md2pdf convert document.md -o output/

批量转换

# 转换当前目录所有md文件
md2pdf batch "*.md" -o output/

# 递归转换
md2pdf batch "docs/*.md" -o output/ -r

监听模式

# 监听文件变化自动转换
md2pdf watch ./docs -o output/

使用指南

命令行选项

convert - 单文件转换

md2pdf convert <input.md> [OPTIONS]

选项:
  -o, --output PATH    输出PDF路径
  -c, --config PATH   配置文件路径
  -t, --template PATH Pandoc模板
  -w, --workers N     并发数 (默认: 8)

batch - 批量转换

md2pdf batch "<pattern>" [OPTIONS]

选项:
  -o, --output PATH    输出目录
  -c, --config PATH   配置文件路径
  -r, --recursive     递归处理子目录
  -i, --ignore TEXT   忽略的模式
  -w, --workers N     并发数 (默认: 8)
  --dry-run           模拟运行

watch - 监听模式

md2pdf watch <directory> [OPTIONS]

选项:
  -o, --output PATH   输出目录
  -r, --recursive    监听子目录 (默认: True)
  -d, --debounce N   防抖延迟ms (默认: 500)
  -w, --workers N    并发数 (默认: 8)

config - 配置管理

# 初始化配置文件
md2pdf init

# 显示当前配置
md2pdf config-show

# 指定配置文件
md2pdf config-show -c custom.yaml

doctor - 环境检查

md2pdf doctor

配置文件

详细配置说明请参考 配置文档

创建 md2pdf.yaml 配置文件:

version: "1.0.0"

mermaid:
  theme: default      # default, dark, forest, neutral
  format: pdf        # pdf, svg
  width: 1200

pandoc:
  pdf_engine: tectonic  # tectonic, xelatex, lualatex
  highlight_style: tango
  math_engine: mathspec

processing:
  max_workers: 8
  timeout: 300

output:
  output_dir: ./output
  temp_dir: /tmp/md2pdf
  optimize_pdf: true

font:
  cjk_primary: "PingFang SC"

示例

带Mermaid图表的Markdown

```markdown

我的文档

流程图

```mermaid flowchart TD A[开始] --> B{判断} B -->|是| C[处理1] B -->|否| D[处理2] ```


### 带数学公式

\`\`\`markdown
## 数学公式

行内公式: $E = mc^2$

块公式:
$$
\\int_{-\\infty}^{\\infty} e^{-x^2} dx = \\sqrt{\\pi}
$$
\`\`\`

项目结构

md2pdf-pro/
├── src/md2pdf_pro/
│   ├── __init__.py      # 包初始化
│   ├── config.py         # 配置管理 (Pydantic)
│   ├── preprocessor.py   # Mermaid预处理
│   ├── converter.py      # Pandoc转换引擎
│   ├── parallel.py       # 并行处理
│   ├── watcher.py        # 文件监控
│   └── cli.py            # CLI入口
├── tests/
│   ├── conftest.py       # pytest配置
│   ├── unit/             # 单元测试
│   └── integration/      # 集成测试
├── pyproject.toml        # 项目配置
├── requirements.txt      # Python依赖
├── Makefile              # 构建脚本
└── .gitignore

开发

# 安装开发环境
make dev

# 运行测试
make test

# 代码检查
make lint

# 格式化代码
make format

许可证

MIT License - see LICENSE for details.


感谢

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

md2pdf_pro-1.2.0.tar.gz (28.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

md2pdf_pro-1.2.0-py3-none-any.whl (29.8 kB view details)

Uploaded Python 3

File details

Details for the file md2pdf_pro-1.2.0.tar.gz.

File metadata

  • Download URL: md2pdf_pro-1.2.0.tar.gz
  • Upload date:
  • Size: 28.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.11

File hashes

Hashes for md2pdf_pro-1.2.0.tar.gz
Algorithm Hash digest
SHA256 5e6f963b124e03e8afa9bdc002ae3734306cc34259f3d6e936ab388c9486bf26
MD5 67193c809ff263ca768fb2a61ede9660
BLAKE2b-256 8abb731ce236bf5f6b04424501377d8cb7462e2f7fd3ed36b597f361900b8d0f

See more details on using hashes here.

File details

Details for the file md2pdf_pro-1.2.0-py3-none-any.whl.

File metadata

  • Download URL: md2pdf_pro-1.2.0-py3-none-any.whl
  • Upload date:
  • Size: 29.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.11

File hashes

Hashes for md2pdf_pro-1.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 54299b80b9a2621ca48a1445b18ea1d2b6ef52a92d88d17891fa754ca98ade0e
MD5 fa1c054c9ac0fc47be92af2b6c25b3e3
BLAKE2b-256 ae90da609263dcea425c43e535a8dcfdebdcc9de79b8a9f76b0b2e5a3eb6815d

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page