# ibai-tools-plus **Repository Path**: yq_ymj/ibai-tools-plus ## Basic Information - **Project Name**: ibai-tools-plus - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-01-27 - **Last Updated**: 2026-01-27 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # PDF 工具箱 一个功能强大的 PDF 处理工具箱,提供图片导出、页面裁剪和文件合并功能。 ## 功能特性 ### 1. PDF 导出图片 - 将 PDF 文件导出为图片格式(PNG/JPG/JPEG) - 支持指定页码范围 - 高质量输出(300 DPI) - 批量导出多页 ### 2. PDF 页面裁剪 - 根据页码范围裁剪 PDF 文件 - 精确提取指定页面 - 保持原始 PDF 质量 ### 3. PDF 文件合并 - 合并多个 PDF 文件 - 每个文件可单独设置页码范围 - 保持文件顺序和页面完整性 ## 技术栈 ### 前端 - Vue 3 + Vite - Tailwind CSS - FontAwesome ### 后端 - Python Flask - PyPDF2 (PDF 处理) - pdf2image (PDF 转图片) - Pillow (图片处理) ## 快速开始 ### 方式一:使用启动脚本(推荐) ```bash # macOS/Linux 用户 chmod +x start.sh ./start.sh ``` 脚本会自动: 1. 检查系统依赖 2. 安装 Python 和 Node.js 依赖 3. 启动后端服务(http://localhost:5000) 4. 启动前端服务(http://localhost:5173) ### 方式二:手动启动 #### 1. 启动后端 ```bash cd tools-api # 创建虚拟环境 python3 -m venv venv # 激活虚拟环境 # macOS/Linux: source venv/bin/activate # Windows: venv\Scripts\activate # 安装依赖 pip install -r requirements.txt # 启动服务 python app.py ``` 后端服务将在 http://localhost:5000 启动。 #### 2. 启动前端 ```bash cd tools-app # 安装依赖 npm install # 启动开发服务器 npm run dev ``` 前端服务将在 http://localhost:5173 启动。 ### 系统依赖 后端服务需要安装 poppler(用于 pdf2image): **macOS:** ```bash brew install poppler ``` **Ubuntu/Debian:** ```bash sudo apt-get install poppler-utils ``` **CentOS/RHEL:** ```bash sudo yum install poppler-utils ``` **Windows:** 下载并安装:http://blog.alivate.com.au/poppler-windows/ ## 项目结构 ``` ibai-tools/ ├── tools-api/ # 后端服务 │ ├── app.py # Flask 主应用 │ ├── config.py # 配置文件 │ ├── requirements.txt # Python 依赖 │ ├── routes/ # API 路由 │ ├── services/ # 业务逻辑 │ ├── utils/ # 工具函数 │ └── uploads/ # 临时文件存储 ├── tools-app/ # 前端应用 │ ├── src/ │ │ ├── App.vue # 主组件 │ │ ├── components/ # Vue 组件 │ │ └── utils/ # 工具函数 │ ├── package.json # Node.js 依赖 │ └── .env # 环境配置 └── start.sh # 启动脚本 ``` ## 配置说明 ### 前端配置(tools-app/.env) ```env VITE_API_BASE_URL=http://localhost:5000 ``` 如果后端服务在不同端口或域名,请修改此配置。 ### 后端配置(tools-api/config.py) ```python # 文件大小限制 (50MB) MAX_CONTENT_LENGTH = 50 * 1024 * 1024 # 图片导出 DPI (影响质量) IMAGE_DPI = 300 # 临时文件清理时间 (小时) TEMP_FILE_CLEANUP_HOURS = 1 ``` ## 使用说明 ### 1. PDF 导出图片 1. 选择 "PDF 导出图片" 工具 2. 上传 PDF 文件 3. 设置结束页码(可选,默认全部) 4. 点击 "导出图片" 5. 浏览器会自动下载导出的图片 ### 2. PDF 裁剪 1. 选择 "PDF 裁剪工具" 2. 上传 PDF 文件 3. 设置起始页和结束页 4. 点击 "裁剪 PDF" 5. 浏览器会自动下载裁剪后的 PDF ### 3. PDF 合并 1. 选择 "PDF 合并" 工具 2. 上传多个 PDF 文件(至少 2 个) 3. 为每个文件设置页码范围(可选) 4. 点击 "合并 PDF" 5. 浏览器会自动下载合并后的 PDF ## API 文档 ### 上传文件 ``` POST /api/upload Content-Type: multipart/form-data ``` ### 导出图片 ``` POST /api/pdf/export Content-Type: multipart/form-data 参数: - file_id: 文件 ID - from_page: 起始页(可选) - to_page: 结束页(可选) - format: 图片格式(可选,默认 png) ``` ### 裁剪 PDF ``` POST /api/pdf/crop Content-Type: multipart/form-data 参数: - file_id: 文件 ID - from_page: 起始页 - to_page: 结束页 ``` ### 合并 PDF ``` POST /api/pdf/merge Content-Type: multipart/form-data 参数: - files: JSON 格式的文件配置列表 ``` 详细 API 文档请查看 [tools-api/README.md](tools-api/README.md) ## 开发说明 ### 添加新功能 1. 在 `tools-api/services/` 添加新的服务逻辑 2. 在 `tools-api/routes/` 添加新的 API 路由 3. 在前端 `App.vue` 的 `toolsData` 添加新工具配置 4. 更新前端 `PageRangeConfig.vue` 组件(如果需要新的配置类型) ### 调试 前端开发服务器支持热重载,修改代码后会自动刷新。 后端使用 Flask 的 debug 模式,修改代码后会自动重启。 ## 注意事项 1. **文件大小限制**:单个文件最大 50MB 2. **临时文件**:处理后文件会保存在服务器,1 小时后自动清理 3. **安全性**:仅允许上传 PDF 文件,会进行文件类型和大小验证 4. **并发处理**:支持多用户同时使用,每个请求使用独立临时目录 ## 故障排除 ### 后端启动失败 1. 检查 Python 版本(需要 3.8+) 2. 检查是否安装了 poppler 3. 查看错误日志 ### 前端无法连接后端 1. 检查后端是否正常运行 2. 检查 `.env` 文件中的 `VITE_API_BASE_URL` 配置 3. 检查是否有防火墙阻止 ### 文件上传失败 1. 检查文件大小是否超过 50MB 2. 检查文件类型是否为 PDF 3. 查看浏览器控制台和后端日志 ## 许可证 MIT License ## 贡献 欢迎提交 Issue 和 Pull Request!