# pdf2html - PDF批量转换为HTML工具 一个简单易用的工具,用于将PDF文件批量转换为HTML格式,基于pdf2htmlEX。 ## 功能特性 - **批量转换**:一次性转换目录中所有的PDF文件 - **递归搜索**:支持递归搜索子目录中的PDF文件 - **命令行参数**:灵活的命令行参数配置 - **Docker支持**:提供Docker镜像,简化部署和使用 - **进度显示**:清晰的转换进度和结果统计 - **错误处理**:完善的错误处理和超时机制 ## 技术栈 - **Python 3**:主要开发语言 - **pdf2htmlEX**:PDF转HTML的核心工具 - **Docker**:容器化部署 ## 安装和构建 ### 本地安装 1. 确保已安装Python 3和pdf2htmlEX 2. 克隆或下载此项目 ### Docker构建 ```bash # 进入项目目录 cd pdf2html # 构建Docker镜像 docker build -t pdf2html:latest . ``` 或者使用docker-compose: ```bash docker-compose build ``` ## 使用方法 ### 基本用法 #### 本地使用 ```bash # 转换当前目录下的所有PDF文件 python main.py # 显示帮助信息 python main.py --help ``` #### Docker使用 ```bash # 转换当前目录下的所有PDF文件 docker run --rm -v $(pwd):/app pdf2html:latest # 显示帮助信息 docker run --rm pdf2html:latest --help ``` ### 命令行参数 | 参数 | 简写 | 默认值 | 说明 | |------|------|--------|------| | `--input-dir` | `-i` | `.` (当前目录) | 输入目录,包含PDF文件的目录 | | `--output-dir` | `-o` | `htmls` | 输出目录,保存HTML文件的目录 | | `--recursive` | `-r` | `True` | 递归搜索子目录中的PDF文件 | | `--no-recursive` | - | - | 不递归搜索子目录 | | `--zoom` | `-z` | `1.3` | 转换时的缩放比例 | | `--help` | `-h` | - | 显示帮助信息 | ### 使用示例 #### 1. 基本转换 转换当前目录下的所有PDF文件到默认的`htmls`目录: ```bash # 本地使用 python main.py # Docker使用 docker run --rm -v $(pwd):/app pdf2html:latest ``` #### 2. 指定输入和输出目录 转换`./pdfs`目录中的PDF文件到`./output`目录: ```bash # 本地使用 python main.py -i ./pdfs -o ./output # Docker使用 docker run --rm -v $(pwd):/app pdf2html:latest -i /app/pdfs -o /app/output ``` #### 3. 不递归搜索子目录 只转换当前目录的PDF文件,不搜索子目录: ```bash # 本地使用 python main.py --no-recursive # Docker使用 docker run --rm -v $(pwd):/app pdf2html:latest --no-recursive ``` #### 4. 自定义缩放比例 使用1.5倍缩放比例转换PDF: ```bash # 本地使用 python main.py --zoom 1.5 # Docker使用 docker run --rm -v $(pwd):/app pdf2html:latest --zoom 1.5 ``` #### 5. 组合使用参数 组合使用多个参数,实现更精确的控制: ```bash # 本地使用 python main.py -i ./documents -o ./converted --no-recursive --zoom 2.0 # Docker使用 docker run --rm -v $(pwd):/app pdf2html:latest -i /app/documents -o /app/converted --no-recursive --zoom 2.0 ``` ### 创建便捷别名(推荐) 为了简化使用,可以创建一个别名: ```bash # Linux/Mac alias pdf2html='docker run --rm -v $(pwd):/app pdf2html:latest' # Windows PowerShell function pdf2html { docker run --rm -v ${PWD}:/app pdf2html:latest $args } ``` 然后就可以像使用普通命令一样使用: ```bash # 显示帮助 pdf2html --help # 转换当前目录 pdf2html # 指定参数 pdf2html -i ./pdfs -o ./htmls ``` ## Docker高级用法 ### 使用docker-compose 1. 修改`docker-compose.yml`中的`command`参数(如果需要) 2. 运行: ```bash # 构建并运行 docker-compose up --build # 或者先构建,再运行 docker-compose build docker-compose run pdf2html ``` ### 挂载多个目录 如果需要访问多个目录中的PDF文件: ```bash docker run --rm \ -v /path/to/pdfs1:/app/pdfs1 \ -v /path/to/pdfs2:/app/pdfs2 \ -v /path/to/output:/app/output \ pdf2html:latest \ -i /app/pdfs1 \ -o /app/output ``` ## 注意事项 1. **文件路径**:在Docker中使用时,所有路径都应该是容器内的路径,通常以`/app`开头 2. **权限**:确保挂载的目录有适当的读写权限 3. **大文件**:转换大型PDF文件可能需要较长时间,默认超时时间为5分钟 4. **依赖项**:pdf2htmlEX可能需要一些系统依赖库,Docker镜像已包含所有必要依赖 ## 常见问题 ### Q: 如何处理转换失败的文件? A: 程序会显示转换失败的文件名称和错误信息。您可以检查这些PDF文件是否损坏,或者尝试手动转换。 ### Q: 转换后的HTML文件在哪里? A: 默认情况下,HTML文件会保存在当前目录的`htmls`子目录中。您可以使用`--output-dir`参数指定其他位置。 ### Q: 如何只转换新添加的PDF文件? A: 程序会自动跳过已存在的HTML文件,所以如果您再次运行,只会转换新添加的PDF文件。 ### Q: 支持哪些PDF版本? A: 支持大多数标准PDF文件,但某些特殊格式(如加密PDF)可能无法转换。 ## 项目结构 ``` pdf2html/ ├── main.py # 主程序文件 ├── Dockerfile # Docker构建文件 ├── docker-compose.yml # Docker Compose配置文件 ├── README.md # 项目说明文档 └── .dockerignore # Docker忽略文件 ``` ## 许可证 Copyright © 2017-2024 liuyuqi. All Rights Reserved. ## 联系方式 如有问题或建议,请联系:liuyuqi.gov@msn.cn