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.0.0.tar.gz (21.8 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.0.0-py3-none-any.whl (22.3 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: md2pdf_pro-1.0.0.tar.gz
  • Upload date:
  • Size: 21.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for md2pdf_pro-1.0.0.tar.gz
Algorithm Hash digest
SHA256 e4d12a500ec0e766e6065b47bed8dd2dc25bbcb9f2fcb5586ecd2cdf140344f1
MD5 061e001605c9e5e9319696f76260826d
BLAKE2b-256 932115826e67d7ce9b232ca6a04a14802d6d05cf3da8a231f7f86156915c0be6

See more details on using hashes here.

Provenance

The following attestation bundles were made for md2pdf_pro-1.0.0.tar.gz:

Publisher: publish.yml on one1d/md2pdf-pro

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

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

File metadata

  • Download URL: md2pdf_pro-1.0.0-py3-none-any.whl
  • Upload date:
  • Size: 22.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for md2pdf_pro-1.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 53d4b38db93da80d7a9915a3d5466355a2a76e28c66b8b3cd4ac7363feeb5be1
MD5 5258481038535edcd989c9132f2ef2db
BLAKE2b-256 36f6a0294e3971c5db2ac170348bfa4e30d3cce909c45c8a6fab50051856c0a8

See more details on using hashes here.

Provenance

The following attestation bundles were made for md2pdf_pro-1.0.0-py3-none-any.whl:

Publisher: publish.yml on one1d/md2pdf-pro

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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