README
undoom-pdf-mcp
一个功能强大的PDF转换工具MCP服务器,基于MCP (Model Context Protocol) 协议,集成了多种文件转换功能。
✨ 特性
- 🔄 PDF转图片: 支持单个/批量PDF转换为高质量图片
- 📄 Office转PDF: Word、Excel、PowerPoint文件转PDF
- 🔒 PDF加密: 为PDF文件添加密码保护
- 🖼️ 图片转PDF: 单张或多张图片合并为PDF
- 📊 PDF信息: 获取PDF文件详细信息
- 🚀 批量处理: 支持批量文件转换
- 💾 内存优化: 自动内存管理,避免内存泄漏
功能特性
PDF转图片功能
- 单个PDF转图片: 将PDF文件转换为JPG图片
- 批量PDF转图片: 批量处理多个PDF文件
- 页码选择: 支持指定转换特定页面
- 质量控制: 支持多种图片质量设置
Office文件转PDF功能
- Word转PDF: 支持.doc和.docx格式
- Excel转PDF: 支持.xls和.xlsx格式
- PowerPoint转PDF: 支持.ppt和.pptx格式
- 批量转换: 支持批量转换Office文件
PDF安全功能
- PDF加密: 为PDF文件设置密码保护
- 权限控制: 支持设置PDF文件的访问权限
图片转PDF功能
- 单张图片转PDF: 将单张图片转换为PDF文件
- 多张图片合并PDF: 将多张图片合并为一个PDF文件
- 页面大小设置: 支持A4、A3、Letter等多种页面大小
其他功能
- PDF信息查看: 获取PDF文件的详细信息
- 内存优化: 自动清理内存,避免内存泄漏
🚀 快速开始
环境要求
- Python 3.10+
- Windows系统(Office文件转换功能需要)
- 已安装Microsoft Office(Word、Excel、PowerPoint)
安装
方法1: 使用uv(推荐)
# 克隆仓库
git clone https://github.com/kk520879/undoom_pdf_mcp.git
cd undoom_pdf_mcp
# 安装依赖
uv sync
方法2: 使用pip
# 克隆仓库
git clone https://github.com/kk520879/undoom_pdf_mcp.git
cd undoom_pdf_mcp
# 创建虚拟环境
python -m venv venv
venv\Scripts\activate # Windows
# 安装依赖
pip install -e .
启动服务
# 使用uv运行
uv run python undoom_pdf_mcp/main.py
# 或直接运行
python undoom_pdf_mcp/main.py
MCP客户端配置
方法1: 使用uvx(推荐)
包已发布到PyPI,可以直接使用uvx安装:
{
"mcpServers": {
"undoom-pdf-mcp": {
"command": "uvx",
"args": [
"--index-url",
"https://pypi.tuna.tsinghua.edu.cn/simple",
"undoom-pdf-mcp"
]
}
}
}
注意: 配置中使用了清华大学PyPI镜像源以提高下载速度和稳定性。
方法2: 本地开发配置
如果你是从源码运行,可以使用以下配置:
{
"mcpServers": {
"undoom-pdf-mcp": {
"command": "uv",
"args": [
"--directory",
"/path/to/your/undoom_pdf_mcp",
"run",
"python",
"undoom_pdf_mcp/main.py"
]
}
}
}
将上述配置添加到你的MCP客户端配置文件中(如Claude Desktop的配置文件)。
主要依赖
mcp[cli]>=1.12.4- MCP协议支持PyMuPDF>=1.23.0- PDF处理库Pillow>=10.0.0- 图像处理库pywin32>=306- Windows COM接口(Office文件转换需要)tkinterdnd2>=0.3.0- GUI拖拽支持
使用方法
启动MCP服务器
python main.py
可用工具
1. pdf_to_images
将PDF文件转换为图片
参数:
pdf_path(必需): PDF文件的绝对路径pages(可选): 要转换的页码,格式如'1,2,3-5',留空转换所有页quality(可选): 图片质量倍数,可选值:0.25, 0.5, 1.0, 2.0, 4.0,默认2.0output_dir(可选): 输出目录路径,留空使用PDF同目录
示例:
{
"pdf_path": "C:\\Documents\\example.pdf",
"pages": "1,3-5",
"quality": 2.0
}
2. batch_convert_pdfs
批量转换PDF文件为图片
参数:
folder_path(必需): 包含PDF文件的文件夹路径page_settings(必需): 文件名到页码设置的映射quality(可选): 图片质量倍数,默认2.0
示例:
{
"folder_path": "C:\\Documents\\PDFs",
"page_settings": {
"file1.pdf": "1,2,3-5",
"file2.pdf": "1-10",
"file3.pdf": ""
},
"quality": 2.0
}
3. word_to_pdf
将Word文档转换为PDF
参数:
word_path(必需): Word文件的绝对路径output_path(可选): 输出PDF文件路径,留空自动生成
4. excel_to_pdf
将Excel文档转换为PDF
参数:
excel_path(必需): Excel文件的绝对路径output_path(可选): 输出PDF文件路径,留空自动生成
5. ppt_to_pdf
将PowerPoint文档转换为PDF
参数:
ppt_path(必需): PowerPoint文件的绝对路径output_path(可选): 输出PDF文件路径,留空自动生成
6. batch_office_to_pdf
批量转换Office文件为PDF
参数:
folder_path(必需): 包含Office文件的文件夹路径file_types(可选): 要转换的文件类型列表,默认包含所有Office格式
7. get_pdf_info
获取PDF文件信息
参数:
pdf_path(必需): PDF文件的绝对路径
8. encrypt_pdf
加密PDF文件
参数:
pdf_path(必需): PDF文件的绝对路径password(必需): 加密密码output_path(可选): 输出PDF文件路径,留空自动生成
示例:
{
"pdf_path": "C:\\Documents\\example.pdf",
"password": "mypassword123",
"output_path": "C:\\Documents\\example_encrypted.pdf"
}
9. images_to_pdf
将多张图片合并为PDF
参数:
image_paths(必需): 图片文件路径列表output_path(必需): 输出PDF文件路径page_size(可选): 页面大小,如A4、A3、Letter等,默认A4
示例:
{
"image_paths": [
"C:\\Images\\page1.jpg",
"C:\\Images\\page2.png",
"C:\\Images\\page3.jpg"
],
"output_path": "C:\\Documents\\merged.pdf",
"page_size": "A4"
}
10. single_image_to_pdf
将单张图片转换为PDF
参数:
image_path(必需): 图片文件的绝对路径output_path(可选): 输出PDF文件路径,留空自动生成page_size(可选): 页面大小,如A4、A3、Letter等,默认A4
示例:
{
"image_path": "C:\\Images\\document.jpg",
"page_size": "A4"
}
页码格式说明
支持以下页码格式:
1- 单页1,2,3- 多个单页1-5- 页码范围1,3-5,7- 混合格式- 留空 - 转换所有页
图片质量说明
0.25- 低质量(文件小)0.5- 中低质量1.0- 原始分辨率2.0- 高质量(默认)4.0- 超高质量(文件大)
注意事项
- Office文件转换: 需要在Windows系统上安装相应的Office软件(Word、Excel、PowerPoint)
- 文件路径: 所有路径必须使用绝对路径
- 权限: 确保对输入文件有读取权限,对输出目录有写入权限
- 内存管理: 处理大文件时会自动进行内存清理
错误处理
服务器会捕获并返回详细的错误信息,包括:
- 文件不存在错误
- 权限错误
- 格式不支持错误
- Office应用程序错误
🛠️ 开发说明
本项目基于MCP协议开发,集成了多种PDF和Office文件处理功能:
- PDF转图片: 基于PyMuPDF的高质量PDF渲染
- Office转PDF: 利用Windows COM接口调用Office应用程序
- PDF加密: 使用PyMuPDF的安全功能
- 图片处理: 基于Pillow的图像处理能力
所有功能都通过MCP协议暴露,可以被支持MCP的AI助手或应用程序调用。
项目结构
undoom_pdf_mcp/
├── undoom_pdf_mcp/
│ ├── __init__.py
│ └── main.py # 主程序文件
├── pyproject.toml # 项目配置
├── README.md # 项目说明
├── LICENSE # 许可证
└── test_converter.py # 测试文件
🤝 贡献
欢迎贡献代码!请遵循以下步骤:
- Fork 本仓库
- 创建特性分支 (
git checkout -b feature/AmazingFeature) - 提交更改 (
git commit -m 'Add some AmazingFeature') - 推送到分支 (
git push origin feature/AmazingFeature) - 打开 Pull Request
📝 更新日志
v0.2.3 (2024-12-19)
- 🐛 修复uvx运行时的协程错误
- 🔧 改进异步入口点处理
- 📦 发布到PyPI,支持uvx直接安装
- 🚀 优化MCP服务器启动流程
v0.2.2 (2024-12-19)
- 🔧 优化MCP配置
- 📚 更新文档和配置示例
v0.2.0 (2024-12-19)
- ✨ 新增PDF加密功能
- ✨ 新增图片转PDF功能
- 🐛 修复内存泄漏问题
- 📚 完善文档和示例
v0.1.0 (2024-12-18)
- 🎉 初始版本发布
- ✨ PDF转图片功能
- ✨ Office文件转PDF功能
- ✨ 批量处理功能
📞 联系方式
- 作者: undoom
- 邮箱: kaikaihuhu666@163.com
- GitHub: @kk520879
📄 许可证
本项目采用 MIT License 许可证。
⭐ 支持项目
如果这个项目对您有帮助,请给它一个星标 ⭐!
注意: 本项目主要在Windows系统上测试,Office文件转换功能需要安装相应的Microsoft Office软件。
扫码联系在线客服