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.3.0.tar.gz (29.4 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.3.0-py3-none-any.whl (30.9 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: md2pdf_pro-1.3.0.tar.gz
  • Upload date:
  • Size: 29.4 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.3.0.tar.gz
Algorithm Hash digest
SHA256 e17ff504beba06dd73ab5e42c52e5eaf24009d8c50b215a786908450c22eccf1
MD5 dcb220d3b8aca32e0bf86f2f3ab4e151
BLAKE2b-256 3f576aac0835b026d4953e2873284a523734f3b5b681a958211ee26a0c12d6a9

See more details on using hashes here.

File details

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

File metadata

  • Download URL: md2pdf_pro-1.3.0-py3-none-any.whl
  • Upload date:
  • Size: 30.9 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.3.0-py3-none-any.whl
Algorithm Hash digest
SHA256 2e3c31cc08624a8ea9692acfb0656a5f2591bddde013e986dd9109c408b9977d
MD5 eeac73259484412e631cff1c9d0aa583
BLAKE2b-256 68492b49cc3839937e847d3c14c30480cde4a179e91d91bd887af768b087b48a

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