undoom-pdf-mcp


Nameundoom-pdf-mcp JSON
Version 0.2.3 PyPI version JSON
download
home_pageNone
SummaryPDF转换工具MCP服务器,集成PDF转图片、Office文件转PDF等功能
upload_time2025-08-08 13:07:06
maintainerNone
docs_urlNone
authorNone
requires_python>=3.10
licenseMIT
keywords converter image mcp office pdf
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # undoom-pdf-mcp

[![Python Version](https://img.shields.io/badge/python-3.10%2B-blue.svg)](https://www.python.org/downloads/)
[![License](https://img.shields.io/badge/license-MIT-green.svg)](LICENSE)
[![Version](https://img.shields.io/badge/version-0.2.1-orange.svg)](https://github.com/kk520879/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(推荐)

```bash
# 克隆仓库
git clone https://github.com/kk520879/undoom_pdf_mcp.git
cd undoom_pdf_mcp

# 安装依赖
uv sync
```

#### 方法2: 使用pip

```bash
# 克隆仓库
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 .
```

### 启动服务

```bash
# 使用uv运行
uv run python undoom_pdf_mcp/main.py

# 或直接运行
python undoom_pdf_mcp/main.py
```

### MCP客户端配置

#### 方法1: 使用uvx(推荐)

如果你已经将包发布到PyPI,可以直接使用uvx:

```json
{
  "mcpServers": {
    "undoom-pdf-mcp": {
      "command": "uvx",
      "args": [
        "--index-url",
        "https://pypi.org/simple",
        "undoom-pdf-mcp"
      ],
      "env": {
        "PYTHONPATH": "."
      }
    }
  }
}
```

#### 方法2: 本地开发配置

如果你是从源码运行,可以使用以下配置:

```json
{
  "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服务器

```bash
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.0
- `output_dir` (可选): 输出目录路径,留空使用PDF同目录

**示例:**
```json
{
  "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

**示例:**
```json
{
  "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文件路径,留空自动生成

**示例:**
```json
{
  "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

**示例:**
```json
{
  "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

**示例:**
```json
{
  "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` - 超高质量(文件大)

## 注意事项

1. **Office文件转换**: 需要在Windows系统上安装相应的Office软件(Word、Excel、PowerPoint)
2. **文件路径**: 所有路径必须使用绝对路径
3. **权限**: 确保对输入文件有读取权限,对输出目录有写入权限
4. **内存管理**: 处理大文件时会自动进行内存清理

## 错误处理

服务器会捕获并返回详细的错误信息,包括:
- 文件不存在错误
- 权限错误
- 格式不支持错误
- Office应用程序错误

## 🛠️ 开发说明

本项目基于MCP协议开发,集成了多种PDF和Office文件处理功能:

1. **PDF转图片**: 基于PyMuPDF的高质量PDF渲染
2. **Office转PDF**: 利用Windows COM接口调用Office应用程序
3. **PDF加密**: 使用PyMuPDF的安全功能
4. **图片处理**: 基于Pillow的图像处理能力

所有功能都通过MCP协议暴露,可以被支持MCP的AI助手或应用程序调用。

### 项目结构

```
undoom_pdf_mcp/
├── undoom_pdf_mcp/
│   ├── __init__.py
│   └── main.py          # 主程序文件
├── pyproject.toml       # 项目配置
├── README.md           # 项目说明
├── LICENSE             # 许可证
└── test_converter.py   # 测试文件
```

## 🤝 贡献

欢迎贡献代码!请遵循以下步骤:

1. Fork 本仓库
2. 创建特性分支 (`git checkout -b feature/AmazingFeature`)
3. 提交更改 (`git commit -m 'Add some AmazingFeature'`)
4. 推送到分支 (`git push origin feature/AmazingFeature`)
5. 打开 Pull Request

## 📝 更新日志

### v0.2.0 (2024-12-19)
- ✨ 新增PDF加密功能
- ✨ 新增图片转PDF功能
- 🐛 修复内存泄漏问题
- 📚 完善文档和示例

### v0.1.0 (2024-12-18)
- 🎉 初始版本发布
- ✨ PDF转图片功能
- ✨ Office文件转PDF功能
- ✨ 批量处理功能

## 📞 联系方式

- 作者: undoom
- 邮箱: kaikaihuhu666@163.com
- GitHub: [@kk520879](https://github.com/kk520879)

## 📄 许可证

本项目采用 [MIT License](LICENSE) 许可证。

## ⭐ 支持项目

如果这个项目对您有帮助,请给它一个星标 ⭐!

---

**注意**: 本项目主要在Windows系统上测试,Office文件转换功能需要安装相应的Microsoft Office软件。
            

Raw data

            {
    "_id": null,
    "home_page": null,
    "name": "undoom-pdf-mcp",
    "maintainer": null,
    "docs_url": null,
    "requires_python": ">=3.10",
    "maintainer_email": null,
    "keywords": "converter, image, mcp, office, pdf",
    "author": null,
    "author_email": "undoom <kaikaihuhu666@163.com>",
    "download_url": "https://files.pythonhosted.org/packages/da/96/7173ce3ab934452b267472eaef4b572eed7e352daccc3d16fcd06361ce85/undoom_pdf_mcp-0.2.3.tar.gz",
    "platform": null,
    "description": "# undoom-pdf-mcp\n\n[![Python Version](https://img.shields.io/badge/python-3.10%2B-blue.svg)](https://www.python.org/downloads/)\n[![License](https://img.shields.io/badge/license-MIT-green.svg)](LICENSE)\n[![Version](https://img.shields.io/badge/version-0.2.1-orange.svg)](https://github.com/kk520879/undoom_pdf_mcp)\n\n\u4e00\u4e2a\u529f\u80fd\u5f3a\u5927\u7684PDF\u8f6c\u6362\u5de5\u5177MCP\u670d\u52a1\u5668\uff0c\u57fa\u4e8eMCP (Model Context Protocol) \u534f\u8bae\uff0c\u96c6\u6210\u4e86\u591a\u79cd\u6587\u4ef6\u8f6c\u6362\u529f\u80fd\u3002\n\n## \u2728 \u7279\u6027\n\n- \ud83d\udd04 **PDF\u8f6c\u56fe\u7247**: \u652f\u6301\u5355\u4e2a/\u6279\u91cfPDF\u8f6c\u6362\u4e3a\u9ad8\u8d28\u91cf\u56fe\u7247\n- \ud83d\udcc4 **Office\u8f6cPDF**: Word\u3001Excel\u3001PowerPoint\u6587\u4ef6\u8f6cPDF\n- \ud83d\udd12 **PDF\u52a0\u5bc6**: \u4e3aPDF\u6587\u4ef6\u6dfb\u52a0\u5bc6\u7801\u4fdd\u62a4\n- \ud83d\uddbc\ufe0f **\u56fe\u7247\u8f6cPDF**: \u5355\u5f20\u6216\u591a\u5f20\u56fe\u7247\u5408\u5e76\u4e3aPDF\n- \ud83d\udcca **PDF\u4fe1\u606f**: \u83b7\u53d6PDF\u6587\u4ef6\u8be6\u7ec6\u4fe1\u606f\n- \ud83d\ude80 **\u6279\u91cf\u5904\u7406**: \u652f\u6301\u6279\u91cf\u6587\u4ef6\u8f6c\u6362\n- \ud83d\udcbe **\u5185\u5b58\u4f18\u5316**: \u81ea\u52a8\u5185\u5b58\u7ba1\u7406\uff0c\u907f\u514d\u5185\u5b58\u6cc4\u6f0f\n\n## \u529f\u80fd\u7279\u6027\n\n### PDF\u8f6c\u56fe\u7247\u529f\u80fd\n- **\u5355\u4e2aPDF\u8f6c\u56fe\u7247**: \u5c06PDF\u6587\u4ef6\u8f6c\u6362\u4e3aJPG\u56fe\u7247\n- **\u6279\u91cfPDF\u8f6c\u56fe\u7247**: \u6279\u91cf\u5904\u7406\u591a\u4e2aPDF\u6587\u4ef6\n- **\u9875\u7801\u9009\u62e9**: \u652f\u6301\u6307\u5b9a\u8f6c\u6362\u7279\u5b9a\u9875\u9762\n- **\u8d28\u91cf\u63a7\u5236**: \u652f\u6301\u591a\u79cd\u56fe\u7247\u8d28\u91cf\u8bbe\u7f6e\n\n### Office\u6587\u4ef6\u8f6cPDF\u529f\u80fd\n- **Word\u8f6cPDF**: \u652f\u6301.doc\u548c.docx\u683c\u5f0f\n- **Excel\u8f6cPDF**: \u652f\u6301.xls\u548c.xlsx\u683c\u5f0f\n- **PowerPoint\u8f6cPDF**: \u652f\u6301.ppt\u548c.pptx\u683c\u5f0f\n- **\u6279\u91cf\u8f6c\u6362**: \u652f\u6301\u6279\u91cf\u8f6c\u6362Office\u6587\u4ef6\n\n### PDF\u5b89\u5168\u529f\u80fd\n- **PDF\u52a0\u5bc6**: \u4e3aPDF\u6587\u4ef6\u8bbe\u7f6e\u5bc6\u7801\u4fdd\u62a4\n- **\u6743\u9650\u63a7\u5236**: \u652f\u6301\u8bbe\u7f6ePDF\u6587\u4ef6\u7684\u8bbf\u95ee\u6743\u9650\n\n### \u56fe\u7247\u8f6cPDF\u529f\u80fd\n- **\u5355\u5f20\u56fe\u7247\u8f6cPDF**: \u5c06\u5355\u5f20\u56fe\u7247\u8f6c\u6362\u4e3aPDF\u6587\u4ef6\n- **\u591a\u5f20\u56fe\u7247\u5408\u5e76PDF**: \u5c06\u591a\u5f20\u56fe\u7247\u5408\u5e76\u4e3a\u4e00\u4e2aPDF\u6587\u4ef6\n- **\u9875\u9762\u5927\u5c0f\u8bbe\u7f6e**: \u652f\u6301A4\u3001A3\u3001Letter\u7b49\u591a\u79cd\u9875\u9762\u5927\u5c0f\n\n### \u5176\u4ed6\u529f\u80fd\n- **PDF\u4fe1\u606f\u67e5\u770b**: \u83b7\u53d6PDF\u6587\u4ef6\u7684\u8be6\u7ec6\u4fe1\u606f\n- **\u5185\u5b58\u4f18\u5316**: \u81ea\u52a8\u6e05\u7406\u5185\u5b58\uff0c\u907f\u514d\u5185\u5b58\u6cc4\u6f0f\n\n## \ud83d\ude80 \u5feb\u901f\u5f00\u59cb\n\n### \u73af\u5883\u8981\u6c42\n\n- Python 3.10+\n- Windows\u7cfb\u7edf\uff08Office\u6587\u4ef6\u8f6c\u6362\u529f\u80fd\u9700\u8981\uff09\n- \u5df2\u5b89\u88c5Microsoft Office\uff08Word\u3001Excel\u3001PowerPoint\uff09\n\n### \u5b89\u88c5\n\n#### \u65b9\u6cd51: \u4f7f\u7528uv\uff08\u63a8\u8350\uff09\n\n```bash\n# \u514b\u9686\u4ed3\u5e93\ngit clone https://github.com/kk520879/undoom_pdf_mcp.git\ncd undoom_pdf_mcp\n\n# \u5b89\u88c5\u4f9d\u8d56\nuv sync\n```\n\n#### \u65b9\u6cd52: \u4f7f\u7528pip\n\n```bash\n# \u514b\u9686\u4ed3\u5e93\ngit clone https://github.com/kk520879/undoom_pdf_mcp.git\ncd undoom_pdf_mcp\n\n# \u521b\u5efa\u865a\u62df\u73af\u5883\npython -m venv venv\nvenv\\Scripts\\activate  # Windows\n\n# \u5b89\u88c5\u4f9d\u8d56\npip install -e .\n```\n\n### \u542f\u52a8\u670d\u52a1\n\n```bash\n# \u4f7f\u7528uv\u8fd0\u884c\nuv run python undoom_pdf_mcp/main.py\n\n# \u6216\u76f4\u63a5\u8fd0\u884c\npython undoom_pdf_mcp/main.py\n```\n\n### MCP\u5ba2\u6237\u7aef\u914d\u7f6e\n\n#### \u65b9\u6cd51: \u4f7f\u7528uvx\uff08\u63a8\u8350\uff09\n\n\u5982\u679c\u4f60\u5df2\u7ecf\u5c06\u5305\u53d1\u5e03\u5230PyPI\uff0c\u53ef\u4ee5\u76f4\u63a5\u4f7f\u7528uvx\uff1a\n\n```json\n{\n  \"mcpServers\": {\n    \"undoom-pdf-mcp\": {\n      \"command\": \"uvx\",\n      \"args\": [\n        \"--index-url\",\n        \"https://pypi.org/simple\",\n        \"undoom-pdf-mcp\"\n      ],\n      \"env\": {\n        \"PYTHONPATH\": \".\"\n      }\n    }\n  }\n}\n```\n\n#### \u65b9\u6cd52: \u672c\u5730\u5f00\u53d1\u914d\u7f6e\n\n\u5982\u679c\u4f60\u662f\u4ece\u6e90\u7801\u8fd0\u884c\uff0c\u53ef\u4ee5\u4f7f\u7528\u4ee5\u4e0b\u914d\u7f6e\uff1a\n\n```json\n{\n  \"mcpServers\": {\n    \"undoom-pdf-mcp\": {\n      \"command\": \"uv\",\n      \"args\": [\n        \"--directory\",\n        \"/path/to/your/undoom_pdf_mcp\",\n        \"run\",\n        \"python\",\n        \"undoom_pdf_mcp/main.py\"\n      ]\n    }\n  }\n}\n```\n\n\u5c06\u4e0a\u8ff0\u914d\u7f6e\u6dfb\u52a0\u5230\u4f60\u7684MCP\u5ba2\u6237\u7aef\u914d\u7f6e\u6587\u4ef6\u4e2d\uff08\u5982Claude Desktop\u7684\u914d\u7f6e\u6587\u4ef6\uff09\u3002\n\n## \u4e3b\u8981\u4f9d\u8d56\n\n- `mcp[cli]>=1.12.4` - MCP\u534f\u8bae\u652f\u6301\n- `PyMuPDF>=1.23.0` - PDF\u5904\u7406\u5e93\n- `Pillow>=10.0.0` - \u56fe\u50cf\u5904\u7406\u5e93\n- `pywin32>=306` - Windows COM\u63a5\u53e3\uff08Office\u6587\u4ef6\u8f6c\u6362\u9700\u8981\uff09\n- `tkinterdnd2>=0.3.0` - GUI\u62d6\u62fd\u652f\u6301\n\n## \u4f7f\u7528\u65b9\u6cd5\n\n### \u542f\u52a8MCP\u670d\u52a1\u5668\n\n```bash\npython main.py\n```\n\n### \u53ef\u7528\u5de5\u5177\n\n#### 1. pdf_to_images\n\u5c06PDF\u6587\u4ef6\u8f6c\u6362\u4e3a\u56fe\u7247\n\n**\u53c2\u6570:**\n- `pdf_path` (\u5fc5\u9700): PDF\u6587\u4ef6\u7684\u7edd\u5bf9\u8def\u5f84\n- `pages` (\u53ef\u9009): \u8981\u8f6c\u6362\u7684\u9875\u7801\uff0c\u683c\u5f0f\u5982'1,2,3-5'\uff0c\u7559\u7a7a\u8f6c\u6362\u6240\u6709\u9875\n- `quality` (\u53ef\u9009): \u56fe\u7247\u8d28\u91cf\u500d\u6570\uff0c\u53ef\u9009\u503c\uff1a0.25, 0.5, 1.0, 2.0, 4.0\uff0c\u9ed8\u8ba42.0\n- `output_dir` (\u53ef\u9009): \u8f93\u51fa\u76ee\u5f55\u8def\u5f84\uff0c\u7559\u7a7a\u4f7f\u7528PDF\u540c\u76ee\u5f55\n\n**\u793a\u4f8b:**\n```json\n{\n  \"pdf_path\": \"C:\\\\Documents\\\\example.pdf\",\n  \"pages\": \"1,3-5\",\n  \"quality\": 2.0\n}\n```\n\n#### 2. batch_convert_pdfs\n\u6279\u91cf\u8f6c\u6362PDF\u6587\u4ef6\u4e3a\u56fe\u7247\n\n**\u53c2\u6570:**\n- `folder_path` (\u5fc5\u9700): \u5305\u542bPDF\u6587\u4ef6\u7684\u6587\u4ef6\u5939\u8def\u5f84\n- `page_settings` (\u5fc5\u9700): \u6587\u4ef6\u540d\u5230\u9875\u7801\u8bbe\u7f6e\u7684\u6620\u5c04\n- `quality` (\u53ef\u9009): \u56fe\u7247\u8d28\u91cf\u500d\u6570\uff0c\u9ed8\u8ba42.0\n\n**\u793a\u4f8b:**\n```json\n{\n  \"folder_path\": \"C:\\\\Documents\\\\PDFs\",\n  \"page_settings\": {\n    \"file1.pdf\": \"1,2,3-5\",\n    \"file2.pdf\": \"1-10\",\n    \"file3.pdf\": \"\"\n  },\n  \"quality\": 2.0\n}\n```\n\n#### 3. word_to_pdf\n\u5c06Word\u6587\u6863\u8f6c\u6362\u4e3aPDF\n\n**\u53c2\u6570:**\n- `word_path` (\u5fc5\u9700): Word\u6587\u4ef6\u7684\u7edd\u5bf9\u8def\u5f84\n- `output_path` (\u53ef\u9009): \u8f93\u51faPDF\u6587\u4ef6\u8def\u5f84\uff0c\u7559\u7a7a\u81ea\u52a8\u751f\u6210\n\n#### 4. excel_to_pdf\n\u5c06Excel\u6587\u6863\u8f6c\u6362\u4e3aPDF\n\n**\u53c2\u6570:**\n- `excel_path` (\u5fc5\u9700): Excel\u6587\u4ef6\u7684\u7edd\u5bf9\u8def\u5f84\n- `output_path` (\u53ef\u9009): \u8f93\u51faPDF\u6587\u4ef6\u8def\u5f84\uff0c\u7559\u7a7a\u81ea\u52a8\u751f\u6210\n\n#### 5. ppt_to_pdf\n\u5c06PowerPoint\u6587\u6863\u8f6c\u6362\u4e3aPDF\n\n**\u53c2\u6570:**\n- `ppt_path` (\u5fc5\u9700): PowerPoint\u6587\u4ef6\u7684\u7edd\u5bf9\u8def\u5f84\n- `output_path` (\u53ef\u9009): \u8f93\u51faPDF\u6587\u4ef6\u8def\u5f84\uff0c\u7559\u7a7a\u81ea\u52a8\u751f\u6210\n\n#### 6. batch_office_to_pdf\n\u6279\u91cf\u8f6c\u6362Office\u6587\u4ef6\u4e3aPDF\n\n**\u53c2\u6570:**\n- `folder_path` (\u5fc5\u9700): \u5305\u542bOffice\u6587\u4ef6\u7684\u6587\u4ef6\u5939\u8def\u5f84\n- `file_types` (\u53ef\u9009): \u8981\u8f6c\u6362\u7684\u6587\u4ef6\u7c7b\u578b\u5217\u8868\uff0c\u9ed8\u8ba4\u5305\u542b\u6240\u6709Office\u683c\u5f0f\n\n#### 7. get_pdf_info\n\u83b7\u53d6PDF\u6587\u4ef6\u4fe1\u606f\n\n**\u53c2\u6570:**\n- `pdf_path` (\u5fc5\u9700): PDF\u6587\u4ef6\u7684\u7edd\u5bf9\u8def\u5f84\n\n#### 8. encrypt_pdf\n\u52a0\u5bc6PDF\u6587\u4ef6\n\n**\u53c2\u6570:**\n- `pdf_path` (\u5fc5\u9700): PDF\u6587\u4ef6\u7684\u7edd\u5bf9\u8def\u5f84\n- `password` (\u5fc5\u9700): \u52a0\u5bc6\u5bc6\u7801\n- `output_path` (\u53ef\u9009): \u8f93\u51faPDF\u6587\u4ef6\u8def\u5f84\uff0c\u7559\u7a7a\u81ea\u52a8\u751f\u6210\n\n**\u793a\u4f8b:**\n```json\n{\n  \"pdf_path\": \"C:\\\\Documents\\\\example.pdf\",\n  \"password\": \"mypassword123\",\n  \"output_path\": \"C:\\\\Documents\\\\example_encrypted.pdf\"\n}\n```\n\n#### 9. images_to_pdf\n\u5c06\u591a\u5f20\u56fe\u7247\u5408\u5e76\u4e3aPDF\n\n**\u53c2\u6570:**\n- `image_paths` (\u5fc5\u9700): \u56fe\u7247\u6587\u4ef6\u8def\u5f84\u5217\u8868\n- `output_path` (\u5fc5\u9700): \u8f93\u51faPDF\u6587\u4ef6\u8def\u5f84\n- `page_size` (\u53ef\u9009): \u9875\u9762\u5927\u5c0f\uff0c\u5982A4\u3001A3\u3001Letter\u7b49\uff0c\u9ed8\u8ba4A4\n\n**\u793a\u4f8b:**\n```json\n{\n  \"image_paths\": [\n    \"C:\\\\Images\\\\page1.jpg\",\n    \"C:\\\\Images\\\\page2.png\",\n    \"C:\\\\Images\\\\page3.jpg\"\n  ],\n  \"output_path\": \"C:\\\\Documents\\\\merged.pdf\",\n  \"page_size\": \"A4\"\n}\n```\n\n#### 10. single_image_to_pdf\n\u5c06\u5355\u5f20\u56fe\u7247\u8f6c\u6362\u4e3aPDF\n\n**\u53c2\u6570:**\n- `image_path` (\u5fc5\u9700): \u56fe\u7247\u6587\u4ef6\u7684\u7edd\u5bf9\u8def\u5f84\n- `output_path` (\u53ef\u9009): \u8f93\u51faPDF\u6587\u4ef6\u8def\u5f84\uff0c\u7559\u7a7a\u81ea\u52a8\u751f\u6210\n- `page_size` (\u53ef\u9009): \u9875\u9762\u5927\u5c0f\uff0c\u5982A4\u3001A3\u3001Letter\u7b49\uff0c\u9ed8\u8ba4A4\n\n**\u793a\u4f8b:**\n```json\n{\n  \"image_path\": \"C:\\\\Images\\\\document.jpg\",\n  \"page_size\": \"A4\"\n}\n```\n\n## \u9875\u7801\u683c\u5f0f\u8bf4\u660e\n\n\u652f\u6301\u4ee5\u4e0b\u9875\u7801\u683c\u5f0f\uff1a\n- `1` - \u5355\u9875\n- `1,2,3` - \u591a\u4e2a\u5355\u9875\n- `1-5` - \u9875\u7801\u8303\u56f4\n- `1,3-5,7` - \u6df7\u5408\u683c\u5f0f\n- \u7559\u7a7a - \u8f6c\u6362\u6240\u6709\u9875\n\n## \u56fe\u7247\u8d28\u91cf\u8bf4\u660e\n\n- `0.25` - \u4f4e\u8d28\u91cf\uff08\u6587\u4ef6\u5c0f\uff09\n- `0.5` - \u4e2d\u4f4e\u8d28\u91cf\n- `1.0` - \u539f\u59cb\u5206\u8fa8\u7387\n- `2.0` - \u9ad8\u8d28\u91cf\uff08\u9ed8\u8ba4\uff09\n- `4.0` - \u8d85\u9ad8\u8d28\u91cf\uff08\u6587\u4ef6\u5927\uff09\n\n## \u6ce8\u610f\u4e8b\u9879\n\n1. **Office\u6587\u4ef6\u8f6c\u6362**: \u9700\u8981\u5728Windows\u7cfb\u7edf\u4e0a\u5b89\u88c5\u76f8\u5e94\u7684Office\u8f6f\u4ef6\uff08Word\u3001Excel\u3001PowerPoint\uff09\n2. **\u6587\u4ef6\u8def\u5f84**: \u6240\u6709\u8def\u5f84\u5fc5\u987b\u4f7f\u7528\u7edd\u5bf9\u8def\u5f84\n3. **\u6743\u9650**: \u786e\u4fdd\u5bf9\u8f93\u5165\u6587\u4ef6\u6709\u8bfb\u53d6\u6743\u9650\uff0c\u5bf9\u8f93\u51fa\u76ee\u5f55\u6709\u5199\u5165\u6743\u9650\n4. **\u5185\u5b58\u7ba1\u7406**: \u5904\u7406\u5927\u6587\u4ef6\u65f6\u4f1a\u81ea\u52a8\u8fdb\u884c\u5185\u5b58\u6e05\u7406\n\n## \u9519\u8bef\u5904\u7406\n\n\u670d\u52a1\u5668\u4f1a\u6355\u83b7\u5e76\u8fd4\u56de\u8be6\u7ec6\u7684\u9519\u8bef\u4fe1\u606f\uff0c\u5305\u62ec\uff1a\n- \u6587\u4ef6\u4e0d\u5b58\u5728\u9519\u8bef\n- \u6743\u9650\u9519\u8bef\n- \u683c\u5f0f\u4e0d\u652f\u6301\u9519\u8bef\n- Office\u5e94\u7528\u7a0b\u5e8f\u9519\u8bef\n\n## \ud83d\udee0\ufe0f \u5f00\u53d1\u8bf4\u660e\n\n\u672c\u9879\u76ee\u57fa\u4e8eMCP\u534f\u8bae\u5f00\u53d1\uff0c\u96c6\u6210\u4e86\u591a\u79cdPDF\u548cOffice\u6587\u4ef6\u5904\u7406\u529f\u80fd\uff1a\n\n1. **PDF\u8f6c\u56fe\u7247**: \u57fa\u4e8ePyMuPDF\u7684\u9ad8\u8d28\u91cfPDF\u6e32\u67d3\n2. **Office\u8f6cPDF**: \u5229\u7528Windows COM\u63a5\u53e3\u8c03\u7528Office\u5e94\u7528\u7a0b\u5e8f\n3. **PDF\u52a0\u5bc6**: \u4f7f\u7528PyMuPDF\u7684\u5b89\u5168\u529f\u80fd\n4. **\u56fe\u7247\u5904\u7406**: \u57fa\u4e8ePillow\u7684\u56fe\u50cf\u5904\u7406\u80fd\u529b\n\n\u6240\u6709\u529f\u80fd\u90fd\u901a\u8fc7MCP\u534f\u8bae\u66b4\u9732\uff0c\u53ef\u4ee5\u88ab\u652f\u6301MCP\u7684AI\u52a9\u624b\u6216\u5e94\u7528\u7a0b\u5e8f\u8c03\u7528\u3002\n\n### \u9879\u76ee\u7ed3\u6784\n\n```\nundoom_pdf_mcp/\n\u251c\u2500\u2500 undoom_pdf_mcp/\n\u2502   \u251c\u2500\u2500 __init__.py\n\u2502   \u2514\u2500\u2500 main.py          # \u4e3b\u7a0b\u5e8f\u6587\u4ef6\n\u251c\u2500\u2500 pyproject.toml       # \u9879\u76ee\u914d\u7f6e\n\u251c\u2500\u2500 README.md           # \u9879\u76ee\u8bf4\u660e\n\u251c\u2500\u2500 LICENSE             # \u8bb8\u53ef\u8bc1\n\u2514\u2500\u2500 test_converter.py   # \u6d4b\u8bd5\u6587\u4ef6\n```\n\n## \ud83e\udd1d \u8d21\u732e\n\n\u6b22\u8fce\u8d21\u732e\u4ee3\u7801\uff01\u8bf7\u9075\u5faa\u4ee5\u4e0b\u6b65\u9aa4\uff1a\n\n1. Fork \u672c\u4ed3\u5e93\n2. \u521b\u5efa\u7279\u6027\u5206\u652f (`git checkout -b feature/AmazingFeature`)\n3. \u63d0\u4ea4\u66f4\u6539 (`git commit -m 'Add some AmazingFeature'`)\n4. \u63a8\u9001\u5230\u5206\u652f (`git push origin feature/AmazingFeature`)\n5. \u6253\u5f00 Pull Request\n\n## \ud83d\udcdd \u66f4\u65b0\u65e5\u5fd7\n\n### v0.2.0 (2024-12-19)\n- \u2728 \u65b0\u589ePDF\u52a0\u5bc6\u529f\u80fd\n- \u2728 \u65b0\u589e\u56fe\u7247\u8f6cPDF\u529f\u80fd\n- \ud83d\udc1b \u4fee\u590d\u5185\u5b58\u6cc4\u6f0f\u95ee\u9898\n- \ud83d\udcda \u5b8c\u5584\u6587\u6863\u548c\u793a\u4f8b\n\n### v0.1.0 (2024-12-18)\n- \ud83c\udf89 \u521d\u59cb\u7248\u672c\u53d1\u5e03\n- \u2728 PDF\u8f6c\u56fe\u7247\u529f\u80fd\n- \u2728 Office\u6587\u4ef6\u8f6cPDF\u529f\u80fd\n- \u2728 \u6279\u91cf\u5904\u7406\u529f\u80fd\n\n## \ud83d\udcde \u8054\u7cfb\u65b9\u5f0f\n\n- \u4f5c\u8005: undoom\n- \u90ae\u7bb1: kaikaihuhu666@163.com\n- GitHub: [@kk520879](https://github.com/kk520879)\n\n## \ud83d\udcc4 \u8bb8\u53ef\u8bc1\n\n\u672c\u9879\u76ee\u91c7\u7528 [MIT License](LICENSE) \u8bb8\u53ef\u8bc1\u3002\n\n## \u2b50 \u652f\u6301\u9879\u76ee\n\n\u5982\u679c\u8fd9\u4e2a\u9879\u76ee\u5bf9\u60a8\u6709\u5e2e\u52a9\uff0c\u8bf7\u7ed9\u5b83\u4e00\u4e2a\u661f\u6807 \u2b50\uff01\n\n---\n\n**\u6ce8\u610f**: \u672c\u9879\u76ee\u4e3b\u8981\u5728Windows\u7cfb\u7edf\u4e0a\u6d4b\u8bd5\uff0cOffice\u6587\u4ef6\u8f6c\u6362\u529f\u80fd\u9700\u8981\u5b89\u88c5\u76f8\u5e94\u7684Microsoft Office\u8f6f\u4ef6\u3002",
    "bugtrack_url": null,
    "license": "MIT",
    "summary": "PDF\u8f6c\u6362\u5de5\u5177MCP\u670d\u52a1\u5668\uff0c\u96c6\u6210PDF\u8f6c\u56fe\u7247\u3001Office\u6587\u4ef6\u8f6cPDF\u7b49\u529f\u80fd",
    "version": "0.2.3",
    "project_urls": {
        "Homepage": "https://github.com/kk520879/undoom_pdf_mcp",
        "Issues": "https://github.com/kk520879/undoom_pdf_mcp/issues",
        "Repository": "https://github.com/kk520879/undoom_pdf_mcp"
    },
    "split_keywords": [
        "converter",
        " image",
        " mcp",
        " office",
        " pdf"
    ],
    "urls": [
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "7e4281c7014973b54f744a1148cb7c4af44f5bde6f1d42ac46fc5610e859b758",
                "md5": "a7b2a875b828bfcb5c758d371406b67e",
                "sha256": "b052b65a60eedc916e5753cdebd5cce67256a4ebcc00db7a525c61f5f2480f48"
            },
            "downloads": -1,
            "filename": "undoom_pdf_mcp-0.2.3-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "a7b2a875b828bfcb5c758d371406b67e",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.10",
            "size": 12496,
            "upload_time": "2025-08-08T13:07:05",
            "upload_time_iso_8601": "2025-08-08T13:07:05.634774Z",
            "url": "https://files.pythonhosted.org/packages/7e/42/81c7014973b54f744a1148cb7c4af44f5bde6f1d42ac46fc5610e859b758/undoom_pdf_mcp-0.2.3-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "da967173ce3ab934452b267472eaef4b572eed7e352daccc3d16fcd06361ce85",
                "md5": "daa7ded7e04174c78cf6d3b680f441c5",
                "sha256": "510b4ab705d52f38a5ca2736d22965102846978bccee2d55489c2b861bf232af"
            },
            "downloads": -1,
            "filename": "undoom_pdf_mcp-0.2.3.tar.gz",
            "has_sig": false,
            "md5_digest": "daa7ded7e04174c78cf6d3b680f441c5",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.10",
            "size": 12107,
            "upload_time": "2025-08-08T13:07:06",
            "upload_time_iso_8601": "2025-08-08T13:07:06.631668Z",
            "url": "https://files.pythonhosted.org/packages/da/96/7173ce3ab934452b267472eaef4b572eed7e352daccc3d16fcd06361ce85/undoom_pdf_mcp-0.2.3.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2025-08-08 13:07:06",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "kk520879",
    "github_project": "undoom_pdf_mcp",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": false,
    "lcname": "undoom-pdf-mcp"
}
        
Elapsed time: 2.08463s