Skip to main content
Glama

PDFSizeAnalyzer-MCP

Mulan Permissive Software License, Version 2

项目介绍

由于项目基于streamlit并打包,打包后的exe文件只发挥python解释器的功能,而代码仍然以.py的python文件存在,在程序运行时才读取.py代码并运行,这就允许用户在pages中不断增加新的.py文件,增加新的功能。

项目结构

打包后的项目结构/ ├── PDF分析和图片处理工具.exe # 启动程序 ├── PDF.py # 第一个页面 ├── main.py # PDF页面的后端程序,此文件以mcp服务的形式运行,可同时支持AI以MCP方式运行 ├── pages/ # 子页面文件夹,每个子页面都是一个.py文件 │ ├── 图片批量旋转与尺寸调整工具.py │ ├── 开源地址.py │ ├── 后续新增的其他功能.py

已打包的模块

hiddenimports=['streamlit', 'streamlit.web.cli', 'streamlit-sortables', 'pandas', 'PIL', 'PyMuPDF', 'fitz', 'fastmcp', 'PyPDF2', 'tkinter', 'tkinter.filedialog', 'tkinter.simpledialog', 'tkinter.messagebox', 'tkinter.commondialog', 'tkinter.colorchooser', 'tkinter.font', 'tkinter.ttk', 'tkinter.scrolledtext', 'tkinter.dnd', 'tkinter.constants', 'tkinter.tix'],

PDFSizeAnalyzer-MCP

mcp工具介绍

1.统计 PDF 总页数,获取每一页的尺寸(以毫米为单位),同时统计 A3、A4等常见尺寸纸张的数量和页码范围

def analyze_pdf_pages(file_path: str) -> tuple: """ 统计 PDF 总页数,获取每一页的尺寸(以毫米为单位),同时统计 A3、A4等常见尺寸纸张的数量和页码范围。 参数: file_path (str): 单个PDF 文件的路径。 返回: tuple: 包含两个元素的元组,第一个元素是 PDF 的总页数 (int),第二个元素是一个列表 (list), 列表中的每个元素是一个字典,包含纸张尺寸、纸张类型、总页数和页码范围。 """

2.将 PDF 的每一页转换为图片,并保存到以 PDF 名称命名的文件夹中。

def convert_pdf_to_images(file_path: str)-> list: """ 将 PDF 的每一页转换为图片,并保存到以 PDF 名称命名的文件夹中。 参数: file_path (str): 单个 PDF 文件的路径。 返回: list: 包含所有生成图片文件路径的列表。 """

3.根据用户选择的章节拆分PDF文件,返回保存路径的字典列表。

def split_pdf_by_chapters(file_path: str, selected_chapters=None) -> list: """ 根据用户选择的章节拆分PDF文件。

参数: file_path (str): PDF文件的路径。 selected_chapters (list, 可选): 要拆分的章节列表。如果为None,则拆分所有章节。 返回: list: 包含所有拆分后PDF文件路径的列表。 """

4.从PDF中提取章节标题及其起始和结束页码。

def extract_pdf_chapters(file_path: str)-> list: """ 从PDF中提取章节标题及其起始和结束页码。

参数: file_path: PDF文件路径 返回: chapters: 列表,每个元素是一个字典,包含章节信息 - level: 章节的层级(例如,1级书签、2级书签等)。层级越低,章节越重要或越靠上。 - title: 章节的标题。 - start_page: 章节的起始页码。 - end_page: 章节的结束页码。 """

5.根据用户输入的页码范围将PDF分隔成多个单独的PDF文件。

def split_pdf_by_user_input(file_path: str, user_input: str) -> list: """ 根据用户输入的页码范围将PDF分隔成多个单独的PDF文件。

Args: file_path: 要分割的PDF文件路径。 user_input: 用户输入的页码范围,如"1-5,6,7-9,9-12"。 Returns: 分割后的PDF文件路径列表。 """

6.压缩PDF文件,将PDF文件转换为图片型PDF,通过控制图片质量1-100实现体积压缩

def compress_pdf(file_path: str, quality: int = 75) -> str: """ PDF文件压缩(图片型)

参数: file_path: PDF文件路径 quality: 压缩质量 (0-100) 返回: str: 压缩后的PDF文件路径 """

7.压缩PDF文件,通过删除不必要的元素实现体积压缩

def optimize_pdf(file_path: str) -> str: """ PDF优化压缩(文本保留型)

参数: file_path: PDF文件路径 返回: str: 优化后的PDF文件路径 """

8.合并PDF文件

def merge_pdfs(file_paths: list, output_path: str) -> str: """ 合并多个PDF文件为一个PDF文件

参数: file_paths: 要合并的PDF文件路径列表 返回: str: 合并后的PDF文件路径 """

安装教程

1. 进入项目目录

在 Windows 系统中,可以使用以下命令进入项目目录:

cd 替换为你的目录\pdfsize-analyzer-mcp

2. 创建虚拟环境

在 Windows 系统中,可以使用以下命令创建并激活虚拟环境:

python -m venv venv .\venv\Scripts\activate

3. 安装依赖

可以使用以下命令安装:

pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple

4. 生成配置文件(以Trae为例)

运行 生成mcp服务需要的配置文件.py 文件生成 mcp_config.json: 在命令行中执行

python 生成mcp服务需要的配置文件.py

将自动生成 mcp_config.json 文件,内容如下:

{ "mcpServers": { "PDFAnalyzer": { "command": "虚拟环境中的python.exe", "args": [ "主程序main.py的完整路径" ] } } }

使用说明

mcp使用说明

  1. 确保已经按照安装教程完成环境配置。
  2. 在'Trae'软件中,新增MCP,填入配置json内容。
  3. 测试运行,确保配置正确。
  • 测试1:调用mcp服务,告诉我一下这个pdf文件的页数,按打印尺寸分别统计下页数和页码.

本地浏览器使用说明

  1. 用streamlit运行PDF.py
.\venv\Scripts\activate streamlit run PDF.py --server.port 8501
  1. 根据运行窗口生成的网址,或自动打开的网址,在浏览器中打开。
  2. 上传pdf文件,根据需求点击按钮,结果展示在网页展示,并自动打开结果文件夹。

pyinsaller打包教程

  1. 激活虚拟环境
.\venv\Scripts\activate
  1. 用spec打包,注意打包streamlit有点不同:

需要额外的run_app.py文件,需要特定的文件夹hooks,这个文件夹内还需要特定的hook-streamlit.py。 当然这些文件的内容都是固定的,不需要自己修改。

有了上面的基础,就可以打包了。注意修改run_app.spec中datas的文件夹路径

pyinstaller run_app.spec
  1. 打包完成后,在 dist 目录下会生成一个可执行文件,但这个执行文件无法运行,还需要把依赖的py文件复制到dist目录下。 本项目中是: PDF.py # 前端主程序 main.py # 后端主程序 pages/子页面的py文件 # 子页面的py文件

注意事项

  • 确保使用的是虚拟环境中的 Python 解释器,涉及到依赖问题。
  • 先用纯英文目录测试,成功后再测试中文目录。

pages中页面

图片批量旋转与尺寸调整工具

这是整合了谢基海的代码

功能

  • 批量旋转图片:支持批量旋转图片,用户可以选择旋转角度。
  • 批量调整尺寸:支持批量调整图片尺寸,用户可以选择调整宽度和高度。
-
security - not tested
A
license - permissive license
-
quality - not tested

local-only server

The server can only run on the client's local machine because it depends on local resources.

Enables comprehensive PDF analysis and manipulation including page size analysis, chapter extraction, splitting, compression, merging, and conversion to images. Provides both MCP server interface for AI assistants and Streamlit web interface for direct user interaction.

  1. 项目结构
    1. 已打包的模块
      1. PDFSizeAnalyzer-MCP
        1. mcp工具介绍
        2. 安装教程
        3. 使用说明
        4. pyinsaller打包教程
        5. 注意事项
      2. pages中页面
        1. 图片批量旋转与尺寸调整工具

      Related MCP Servers

      • A
        security
        F
        license
        A
        quality
        A server providing PDF form manipulation tools via MCP's API, allowing users to find PDFs across directories, extract form field information, and visualize form fields in documents.
        Last updated -
        6
        6
        Python
      • A
        security
        F
        license
        A
        quality
        An MCP server that provides a tool to extract text content from local PDF files, supporting both standard PDF reading and OCR capabilities with optional page selection.
        Last updated -
        1
        17
        Python
        • Apple
      • A
        security
        A
        license
        A
        quality
        Empowers AI agents to securely read and extract information (text, metadata, page count) from PDF files within project contexts using a flexible MCP tool.
        Last updated -
        1
        365
        200
        TypeScript
        MIT License
        • Linux
        • Apple
      • -
        security
        F
        license
        -
        quality
        A PDF processing server that extracts text via normal parsing or OCR, and retrieves images from PDF files through the MCP protocol with a built-in web debugger.
        Last updated -
        26
        Python

      View all related MCP servers

      MCP directory API

      We provide all the information about MCP servers via our MCP API.

      curl -X GET 'https://glama.ai/api/mcp/v1/servers/wangshuai6491/PDFSizeAnalyzer-MCP'

      If you have feedback or need assistance with the MCP directory API, please join our Discord server