Files
pdf-tools/README.md

382 lines
8.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# PDF转换工具
一个功能丰富的PDF文档处理平台支持多种格式转换让文档处理更简单高效。
## 🎯 项目概述
PDF转换工具是一个现代化的Web应用程序提供高质量的PDF文档转换服务。支持PDF转换为Word、HTML、TXT、图片等多种格式同时提供批量处理、用户管理、转换历史等企业级功能。
## ✨ 核心功能
### 📄 格式转换
- **PDF → Word (.docx)** - 保持原始布局和格式
- **PDF → HTML** - 响应式网页支持CSS框架
- **PDF → TXT** - 纯文本提取,支持多种编码
- **PDF → 图片** - PNG/JPG格式可调节质量和分辨率
- **批量转换** - 同时处理多个文件
### 🔧 高级选项
- **OCR文字识别** - 处理扫描版PDF
- **图片质量控制** - 三档质量选择
- **页面范围选择** - 指定转换页面
- **自定义输出** - 个性化转换设置
### 👥 用户管理
- **用户注册/登录** - JWT身份验证
- **个人设置** - 自定义转换偏好
- **转换历史** - 查看和管理历史记录
- **使用统计** - 转换数据分析
### 🚀 系统特性
- **高性能** - 并发处理,队列管理
- **安全可靠** - 文件加密,自动清理
- **响应式设计** - 支持移动设备
- **RESTful API** - 完整的后端接口
## 🏗️ 技术架构
### 前端技术栈
- **React 18** - 现代化UI框架
- **TypeScript** - 类型安全开发
- **Ant Design** - 企业级UI组件库
- **Tailwind CSS** - 实用工具类CSS
- **Zustand** - 轻量级状态管理
- **React Query** - 数据获取和缓存
### 后端技术栈
- **Node.js** - 高性能运行时
- **Express.js** - Web应用框架
- **MongoDB** - 文档型数据库
- **Redis** - 缓存和会话存储
- **JWT** - 身份验证
- **Multer** - 文件上传处理
### PDF处理引擎
- **pdf-lib** - PDF文档操作
- **pdf-parse** - PDF内容提取
- **pdf2pic** - PDF转图片
- **mammoth.js** - Word文档生成
- **Puppeteer** - HTML转换
## 🚀 快速开始
### 环境要求
- Node.js 16.0+
- MongoDB 4.4+
- Redis 6.0+ (可选)
- Git
### 安装步骤
1. **克隆项目**
```bash
git clone https://github.com/your-username/pdf-tools.git
cd pdf-tools
```
2. **安装依赖**
```bash
npm run install:all
```
3. **环境配置**
```bash
# 复制环境变量文件
cp server/.env.example server/.env
# 编辑环境变量
nano server/.env
```
4. **启动数据库**
```bash
# 启动MongoDB
mongod
# 启动Redis (可选)
redis-server
```
5. **启动应用**
```bash
# 开发模式 (同时启动前后端)
npm run dev
# 或分别启动
npm run dev:server # 后端 (端口3001)
npm run dev:client # 前端 (端口3000)
```
6. **访问应用**
- 前端地址: http://localhost:3000
- 后端API: http://localhost:3001
- 健康检查: http://localhost:3001/health
## 📝 环境变量配置
### 服务器配置 (server/.env)
```bash
# 服务器设置
PORT=3001
NODE_ENV=development
CLIENT_URL=http://localhost:3000
# 数据库连接
MONGODB_URI=mongodb://localhost:27017/pdf-tools
REDIS_URL=redis://localhost:6379
# JWT配置
JWT_SECRET=your-super-secret-key
JWT_EXPIRES_IN=24h
# 文件上传
UPLOAD_DIR=./uploads
MAX_FILE_SIZE=50MB
# 转换设置
CONVERSION_TIMEOUT=300000
MAX_CONCURRENT_CONVERSIONS=5
```
## 🧪 测试
### 运行测试
```bash
# 运行所有测试
npm test
# 后端测试
cd server && npm test
# 前端测试
cd client && npm test
# 测试覆盖率
npm run test:coverage
```
### 测试结构
```
tests/
├── server/
│ ├── api.test.js # API接口测试
│ ├── models.test.js # 数据模型测试
│ └── services.test.js # 服务层测试
└── client/
├── components/ # 组件测试
├── pages/ # 页面测试
└── utils/ # 工具函数测试
```
## 📚 API文档
### 核心接口
#### 文件管理
```bash
POST /api/files/upload # 上传文件
GET /api/files/:id # 获取文件信息
DELETE /api/files/:id # 删除文件
```
#### 转换服务
```bash
POST /api/convert/start # 开始转换
GET /api/convert/status/:taskId # 查询状态
GET /api/convert/result/:taskId # 获取结果
POST /api/convert/batch # 批量转换
```
#### 用户管理
```bash
POST /api/users/register # 用户注册
POST /api/users/login # 用户登录
GET /api/users/profile # 用户信息
PUT /api/users/settings # 更新设置
```
#### 系统信息
```bash
GET /api/system/health # 健康检查
GET /api/system/stats # 系统统计
GET /api/system/formats # 支持格式
```
### 请求示例
#### 开始转换
```bash
curl -X POST http://localhost:3001/api/convert/start \
-H "Content-Type: application/json" \
-d '{
"fileId": "your-file-id",
"outputFormat": "docx",
"options": {
"preserveLayout": true,
"includeImages": true,
"imageQuality": "high"
}
}'
```
## 🏗️ 项目结构
```
pdf-tools/
├── client/ # 前端React应用
│ ├── public/ # 静态资源
│ ├── src/
│ │ ├── components/ # React组件
│ │ ├── pages/ # 页面组件
│ │ ├── stores/ # 状态管理
│ │ ├── services/ # API服务
│ │ ├── types/ # TypeScript类型
│ │ └── utils/ # 工具函数
│ └── package.json # 前端依赖
├── server/ # 后端Node.js应用
│ ├── config/ # 配置文件
│ ├── middleware/ # 中间件
│ ├── models/ # 数据模型
│ ├── routes/ # API路由
│ ├── services/ # 业务服务
│ ├── uploads/ # 文件上传目录
│ ├── outputs/ # 转换结果目录
│ └── package.json # 后端依赖
├── docs/ # 项目文档
├── tests/ # 测试文件
└── package.json # 项目根配置
```
## 🔧 开发指南
### 代码风格
- ESLint + Prettier 代码格式化
- TypeScript 严格模式
- Git Hooks 提交前检查
- 组件和函数注释
### Git工作流
```bash
# 创建功能分支
git checkout -b feature/new-feature
# 提交更改
git add .
git commit -m "feat: 添加新功能"
# 推送分支
git push origin feature/new-feature
# 创建Pull Request
```
### 添加新的转换格式
1.`server/services/conversionService.js` 添加转换逻辑
2. 更新前端类型定义 `client/src/types/index.ts`
3. 修改UI选项 `client/src/components/ConversionOptions/`
4. 添加测试用例
5. 更新API文档
## 🚀 部署指南
### Docker部署
```bash
# 构建镜像
docker build -t pdf-tools .
# 运行容器
docker run -p 3000:3000 -p 3001:3001 pdf-tools
```
### 生产环境
```bash
# 构建前端
cd client && npm run build
# 启动生产服务器
cd server && npm start
```
### 环境变量 (生产)
```bash
NODE_ENV=production
MONGODB_URI=mongodb://your-mongo-host:27017/pdf-tools
JWT_SECRET=your-production-secret
```
## 📊 性能指标
| 指标 | 目标值 | 当前值 |
|------|--------|--------|
| 文件上传速度 | >50MB/s | ✅ |
| PDF转Word | <30秒/ | |
| PDF转HTML | <10秒/ | |
| 并发用户数 | 1000+ | |
| 系统可用性 | 99.9% | |
## 🔒 安全特性
- **文件加密存储** - AES-256加密
- **访问权限控制** - JWT + RBAC
- **请求速率限制** - 防止滥用
- **数据自动清理** - 定期删除临时文件
- **安全头设置** - Helmet中间件
- **输入数据验证** - 严格的参数检查
## 🤝 贡献指南
### 如何贡献
1. Fork 项目
2. 创建功能分支
3. 提交更改
4. 推送到分支
5. 创建 Pull Request
### 贡献类型
- 🐛 Bug修复
- 新功能
- 📝 文档改进
- 🎨 UI/UX优化
- 性能优化
- 🧪 测试用例
### 代码审查
- 所有代码必须通过测试
- 需要至少一人审查
- 保持代码风格一致
- 添加适当的注释
## 📄 许可证
本项目基于 [MIT许可证](LICENSE) 开源
## 🆘 支持与帮助
### 常见问题
- **Q: 支持哪些文件格式**
A: 目前支持PDF输入输出格式包括WordHTMLTXTPNGJPG
- **Q: 文件大小限制是多少**
A: 默认限制50MB可在配置中调整
- **Q: 转换后的文件保存多久**
A: 默认24小时后自动删除保护用户隐私
### 获取帮助
- 📧 邮箱: support@pdf-tools.com
- 💬 GitHub Issues: [提交问题](https://github.com/your-username/pdf-tools/issues)
- 📖 文档: [在线文档](https://docs.pdf-tools.com)
## 🎉 致谢
感谢以下开源项目的支持
- React & React生态系统
- Node.js & Express
- MongoDB & Redis
- Ant Design
- PDF.js & pdf-lib
- 所有贡献者
---
**PDF转换工具** - 让文档转换更简单高效 🚀