# analysisPdf **Repository Path**: zhuxianfei/analysisPdf ## Basic Information - **Project Name**: analysisPdf - **Description**: 解析PDF文件并生成TXT/PNG/WORD - **Primary Language**: Java - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 6 - **Forks**: 2 - **Created**: 2021-12-28 - **Last Updated**: 2026-03-15 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # PDF 文档转换工具 将 PDF 文档转换为 TXT、PNG、Word 格式的 REST API 服务。 ## 环境要求 - JDK 8+ - Maven 3.6+ ## 快速开始 ```bash # 打包项目 mvn clean package # 启动服务 java -jar target/analysisPdf-0.0.1-SNAPSHOT.jar ``` 服务默认端口:**8088**,Context-Path:`/utils` --- ## API 接口 ### 1. PDF 转 TXT 提取 PDF 文本内容保存为 TXT 文件。 **请求** ```http POST http://localhost:8088/utils/pdf/analysisPdf2Text Content-Type: application/x-www-form-urlencoded filePath=D:/test/document.pdf ``` **参数** | 参数 | 类型 | 必填 | 说明 | |-----|------|------|------| | filePath | String | ✅ | PDF 文件完整路径 | **响应** ```json { "returnType": "SUCCESS", "content": "解析成功" } ``` --- ### 2. PDF 转 PNG 将 PDF 每页转换为 PNG 图片。 **请求** ```http POST http://localhost:8088/utils/pdf/analysisPdf2Image Content-Type: application/x-www-form-urlencoded PdfFilePath=D:/test/document.pdf dstImgFolder=D:/images dpi=150 ``` **参数** | 参数 | 类型 | 必填 | 默认值 | 说明 | |-----|------|------|--------|------| | PdfFilePath | String | ✅ | - | PDF 文件完整路径 | | dstImgFolder | String | ❌ | PDF同目录 | 图片输出目录 | | dpi | Integer | ❌ | 96 | 图片分辨率,范围 72-600 | **输出** 在输出目录生成 `{文件名}_1.png`、`{文件名}_2.png` ... 每页一张图片。 --- ### 3. PDF 转 Word 将 PDF 转换为 Word 文档。 **请求** ```http POST http://localhost:8088/utils/pdf/analysisPdf2Doc Content-Type: application/x-www-form-urlencoded PdfFilePath=D:/test/document.pdf docFolder=D:/docs ``` **参数** | 参数 | 类型 | 必填 | 默认值 | 说明 | |-----|------|------|--------|------| | PdfFilePath | String | ✅ | - | PDF 文件完整路径 | | docFolder | String | ❌ | PDF同目录 | Word 输出目录 | > ⚠️ **限制**:免费版 Spire.PDF 仅支持 10 页以内的文档 --- ## 配置说明 配置文件:`src/main/resources/application.yml` ```yaml pdf: # 允许访问的目录路径,多个用逗号分隔 allowed-paths: /tmp,/var/uploads,D:/Others # 最大文件大小(字节),默认 50MB max-file-size: 52428800 # 最大页数限制,默认 500 页 max-pages: 500 ``` --- ## 安全改进 | 改进项 | 说明 | |--------|------| | 路径遍历防护 | 限制文件操作在指定目录内,支持可配置 | | 文件名安全校验 | 禁止 `..`、`/`、`\` 等非法字符 | | 文件大小限制 | 防止大文件导致 OOM | | 页数限制 | 防止多页 PDF 耗尽资源 | | 异常信息脱敏 | 避免泄露系统路径信息 | --- ## 响应格式 所有接口返回统一 JSON 格式: ```json { "returnType": "SUCCESS", // SUCCESS | FAILURE "content": "操作描述信息" } ``` --- ## 使用示例 ### cURL ```bash # PDF 转 TXT curl -X POST "http://localhost:8088/utils/pdf/analysisPdf2Text" \ -d "filePath=D:/test/sample.pdf" # PDF 转 PNG curl -X POST "http://localhost:8088/utils/pdf/analysisPdf2Image" \ -d "PdfFilePath=D:/test/sample.pdf" \ -d "dstImgFolder=D:/images" \ -d "dpi=150" # PDF 转 Word curl -X POST "http://localhost:8088/utils/pdf/analysisPdf2Doc" \ -d "PdfFilePath=D:/test/sample.pdf" \ -d "docFolder=D:/docs" ``` --- ## 项目结构 ``` src/main/java/com/feyfey/ ├── controller/ │ └── AnalysisPdfController.java # REST 接口 ├── service/ │ ├── AnalysisPdfService.java # 服务接口 │ └── impl/ │ └── AnalysisPdfServiceImpl.java # 服务实现 ├── constant/ │ ├── JsonReturnResult.java # 响应实体 │ └── JsonReturnResultTypeEnum.java # 响应类型枚举 └── config/ └── SystemConfig.java # Tomcat 配置 ``` --- ## 技术栈 - Spring Boot 2.x - Apache PDFBox - PDF 转图片 - Spire.PDF - PDF 转 TXT/Word