io.github.huoshuiai42/huoshui-pdf-converter

效率与工作流

by huoshuiai42

提供 PDF 文件转换能力的 MCP 服务,可将 PDF 与其他常见文档格式进行互转。

什么是 io.github.huoshuiai42/huoshui-pdf-converter

提供 PDF 文件转换能力的 MCP 服务,可将 PDF 与其他常见文档格式进行互转。

README

活水 PDF 转换器 (Huoshui PDF Converter)

License: MIT Python 3.10+ MCP PyPI version

A high-quality, cross-platform PDF ↔ Markdown converter implemented as an MCP (Model Context Protocol) server. Supports bidirectional conversion with full Unicode/CJK character support.

Features

Core Capabilities

  • PDF → Markdown: Extract text and images with layout preservation
  • Markdown → PDF: Generate beautiful PDFs with multiple rendering engines
  • Unicode Support: Full support for Chinese, Japanese, Korean, and other Unicode characters
  • Cross-Platform: Works on Windows, macOS, and Linux
  • MCP Integration: Use with Claude Desktop or any MCP-compatible client

Technical Features

  • Pure Python: No external system dependencies required
  • Automatic Font Detection: Finds and uses system Unicode fonts
  • Smart Engine Selection: Automatically switches engines based on content
  • Comprehensive Error Handling: Graceful degradation and detailed logging
  • Async Architecture: Non-blocking operations for better performance

Installation

From MCP Registry (Recommended)

This server is available in the Model Context Protocol Registry. Install it using your MCP client.

mcp-name: io.github.huoshuiai42/huoshui-pdf-converter

As a Python Package

bash
pip install huoshui-pdf-converter

Or using uv (recommended):

bash
uv pip install huoshui-pdf-converter

As an MCP Server

Add to your Claude Desktop configuration:

macOS: ~/Library/Application Support/Claude/claude_desktop_config.json Windows: %APPDATA%\Claude\claude_desktop_config.json Linux: ~/.config/Claude/claude_desktop_config.json

json
{
  "mcpServers": {
    "huoshui-pdf-converter": {
      "command": "uvx",
      "args": ["huoshui-pdf-converter"],
      "env": {}
    }
  }
}

Or if you prefer to use a specific Python environment:

json
{
  "mcpServers": {
    "huoshui-pdf-converter": {
      "command": "python",
      "args": ["-m", "huoshui_pdf_converter.server"],
      "env": {}
    }
  }
}

Usage

Command Line Interface

bash
# Convert PDF to Markdown
huoshui-pdf pdf-to-md input.pdf output.md

# Convert Markdown to PDF
huoshui-pdf md-to-pdf input.md output.pdf

# With options
huoshui-pdf md-to-pdf input.md output.pdf --page-size A4 --margin 2cm --font-size 12

As a Python Library

python
import asyncio
from huoshui_pdf_converter import PDFToMarkdownConverter, MarkdownToPDFConverter

async def main():
    # PDF to Markdown
    pdf_converter = PDFToMarkdownConverter()
    result = await pdf_converter.convert(
        pdf_path="input.pdf",
        output_path="output.md",
        extract_images=True,
        preserve_formatting=True
    )

    # Markdown to PDF
    md_converter = MarkdownToPDFConverter()
    result = await md_converter.convert(
        markdown_path="input.md",
        output_path="output.pdf",
        page_size="A4",
        margin="2cm",
        font_size=12
    )

asyncio.run(main())

MCP Tools

When used as an MCP server, the following tools are available:

  1. pdf_to_markdown: Convert PDF files to Markdown

    json
    {
      "pdf_path": "path/to/input.pdf",
      "output_path": "path/to/output.md",
      "extract_images": true,
      "preserve_formatting": true
    }
    
  2. markdown_to_pdf: Convert Markdown files to PDF

    json
    {
      "markdown_path": "path/to/input.md",
      "output_path": "path/to/output.pdf",
      "page_size": "A4",
      "margin": "2cm",
      "font_size": 12
    }
    
  3. list_supported_formats: Get supported formats and engines

  4. validate_file: Validate input files before conversion

Supported Formats

Input Formats

  • PDF: All standard PDF files (PDF 1.0 - 1.7)
  • Markdown: CommonMark and GitHub Flavored Markdown

Output Options

  • Page Sizes: A4, A3, Letter, Legal
  • Margins: Customizable (e.g., "1cm", "0.5in")
  • Font Sizes: Any size in points
  • Images: PNG, JPEG extraction from PDFs

Unicode and Font Support

The converter automatically detects and uses appropriate fonts for different languages:

  • macOS: Arial Unicode, PingFang SC, STHeiti
  • Windows: Microsoft YaHei, SimSun, Arial Unicode MS
  • Linux: Noto Sans CJK, Source Han Sans, WenQuanYi

Architecture

Conversion Engines

PDF → Markdown

  • PyMuPDF (MuPDF): High-quality text and image extraction

Markdown → PDF

  • ReportLab: Best Unicode support, cross-platform compatibility
  • xhtml2pdf: Good HTML/CSS rendering (fallback)
  • fpdf2: Basic PDF generation (last resort)

Engine Selection Logic

  1. Detects CJK characters → Uses ReportLab
  2. Complex formatting → Uses xhtml2pdf
  3. Basic documents → Uses any available engine

Development

Setup Development Environment

bash
# Clone the repository
git clone https://github.com/yourusername/huoshui-pdf-converter.git
cd huoshui-pdf-converter

# Install dependencies
uv pip install -e ".[dev]"

# Run tests
python test_converter.py

Project Structure

code
huoshui-pdf-converter/
├── huoshui_pdf_converter/
│   ├── __init__.py
│   ├── server.py           # MCP server implementation
│   ├── pdf_converter.py    # PDF to Markdown converter
│   └── markdown_converter.py # Markdown to PDF converter
├── pyproject.toml
├── README.md
├── LICENSE
└── test_converter.py

Troubleshooting

Common Issues

  1. Chinese characters not displaying:

    • Ensure Arial Unicode or similar fonts are installed
    • The converter will automatically detect and use appropriate fonts
  2. Import errors:

    • Install all dependencies: pip install huoshui-pdf-converter[all]
  3. MCP connection issues:

    • Check Claude Desktop logs
    • Ensure Python is in your PATH

Logging

Enable debug logging:

python
import logging
logging.basicConfig(level=logging.DEBUG)

Contributing

Contributions are welcome! Please:

  1. Fork the repository
  2. Create a feature branch (git checkout -b feature/amazing-feature)
  3. Commit your changes (git commit -m 'Add amazing feature')
  4. Push to the branch (git push origin feature/amazing-feature)
  5. Open a Pull Request

License

This project is licensed under the MIT License - see the LICENSE file for details.

Acknowledgments

  • Built with FastMCP for Model Context Protocol support
  • Uses PyMuPDF for PDF parsing
  • Uses ReportLab for PDF generation
  • Inspired by the need for better PDF ↔ Markdown conversion tools

Support

常见问题

io.github.huoshuiai42/huoshui-pdf-converter 是什么?

提供 PDF 文件转换能力的 MCP 服务,可将 PDF 与其他常见文档格式进行互转。

相关 Skills

技能工坊

by anthropics

Universal
热门

覆盖 Skill 从创建到迭代优化全流程:起草能力、补测试提示、跑评测与基准方差分析,并持续改写内容和描述,提升效果与触发准确率。

技能工坊把技能从创建、迭代到评测串成闭环,方差分析加描述优化,特别适合把触发准确率打磨得更稳。

效率与工作流
未扫描114.1k

表格处理

by anthropics

Universal
热门

围绕 .xlsx、.xlsm、.csv、.tsv 做读写、修复、清洗、格式整理、公式计算与格式转换,适合修改现有表格、生成新报表或把杂乱数据整理成交付级电子表格。

做 Excel/CSV 相关任务很省心,能直接读写、修复、清洗和格式转换,尤其擅长把乱七八糟的表格整理成交付级文件。

效率与工作流
未扫描114.1k

PPT处理

by anthropics

Universal
热门

处理 .pptx 全流程:创建演示文稿、提取和解析幻灯片内容、批量修改现有文件,支持模板套用、合并拆分、备注评论与版式调整。

涉及PPTX的创建、解析、修改到合并拆分都能一站搞定,连备注、模板和评论也能处理,做演示文稿特别省心。

效率与工作流
未扫描114.1k

相关 MCP Server

文件系统

编辑精选

by Anthropic

热门

Filesystem 是 MCP 官方参考服务器,让 LLM 安全读写本地文件系统。

这个服务器解决了让 Claude 直接操作本地文件的痛点,比如自动整理文档或生成代码文件。适合需要自动化文件处理的开发者,但注意它只是参考实现,生产环境需自行加固安全。

效率与工作流
83.4k

by wonderwhy-er

热门

Desktop Commander 是让 AI 直接执行终端命令、管理文件和进程的 MCP 服务器。

这工具解决了 AI 无法直接操作本地环境的痛点,适合需要自动化脚本调试或文件批量处理的开发者。它能让你用自然语言指挥终端,但权限控制需谨慎,毕竟让 AI 执行 rm -rf 可不是闹着玩的。

效率与工作流
5.9k

EdgarTools

编辑精选

by dgunning

热门

EdgarTools 是无需 API 密钥即可解析 SEC EDGAR 财报的开源 Python 库。

这个工具解决了金融数据获取的痛点——直接让 AI 读取结构化财报,比如让 Claude 分析苹果的 10-K 文件。适合量化分析师或金融开发者快速构建数据管道。但注意,它依赖 SEC 网站稳定性,高峰期可能延迟。

效率与工作流
2.0k

评论