# PDF书签合并工具 - Python版 ## 📋 简介 这是PDF书签合并工具的Python版本,使用Python + Tkinter开发,具有以下特点: - 🚀 **运行速度快**:Python优化算法,处理效率高 - 📦 **绿色软件**:无需安装,打包后独立运行 - 🎯 **智能分组**:自动按文件名前缀合并相关文件 - 📊 **实时日志**:详细的处理进度和错误信息 - 🌍 **编码兼容**:支持UTF-8、GBK、GB2312等多种编码 - 💾 **独立程序**:打包后无任何依赖,复制即用 ## 🔧 环境要求 ### 开发环境 - Python 3.7 或更高版本 - 标准库:tkinter, pathlib, re, os, sys, logging ### 运行环境(打包后) - Windows 7 SP1 或更高版本 - **无需安装Python**(打包后独立运行) ## 📁 文件结构 ``` SlideCombine/ ├── slide_combine.py # 主程序文件 ├── build_exe.py # 自动打包脚本 ├── requirements.txt # 依赖包列表(仅开发需要) ├── README_Python.md # Python版说明文档 ├── app.ico # 程序图标(可选) └── dist/ # 打包输出文件夹 └── SlideCombine.exe # 最终可执行文件 ``` ## 🚀 使用方法 ### 方法一:直接运行Python脚本 ```bash python slide_combine.py ``` ### 方法二:自动打包成exe ```bash python build_exe.py ``` 打包完成后,会在 `dist` 文件夹中生成 `SlideCombine.exe`,可以直接运行。 ## 🎯 功能特点 ### 1. 智能文件分组 - 自动识别文件名前缀 - 例如:`CH-875 1-3` 和 `CH-875 4-6` → `CH-875.txt` ### 2. 多格式书签解析 - 支持阿拉伯数字页码:1, 2, 3... - 支持罗马数字页码:I, II, III... - 自动识别页码位置 ### 3. 编码自动检测 - 优先尝试:UTF-8, GBK, GB2312 - 兜底方案:Latin-1 确保文件可读 - 输出统一使用UTF-8 with BOM ### 4. 友好的用户界面 - 现代化Tkinter界面设计 - 实时日志显示,支持颜色区分 - 进度跟踪和错误提示 ## 📦 部署说明 ### 绿色软件特性 - 无需安装任何软件 - 不写入注册表 - 不依赖系统框架 - 可以直接在U盘运行 ### 系统兼容性 - ✅ Windows 7 SP1 - ✅ Windows 8/8.1 - ✅ Windows 10/11 - ✅ 支持32位和64位系统 ### 文件大小 - 压缩前:约15-20 MB(包含Python运行时) - 解压后内存占用:约30-50 MB ## 🔄 与C#版本对比 | 特性 | Python版 | C#版 | |------|----------|-------| | 运行环境 | Windows全系统 | 需要.NET Framework | | 打包大小 | 较大(15-20MB) | 较小(30-50KB) | | 启动速度 | 稍慢 | 很快 | | 开发效率 | 高 | 中 | | 维护性 | 高 | 中 | | 跨平台 | 支持 | 仅Windows | ## 🛠️ 开发说明 ### 代码架构 - **BookmarkItem**: 书签数据模型 - **DocumentMetadata**: 文档元数据模型 - **BookmarkExtractor**: 书签提取器 - **FileProcessor**: 文件处理器 - **SlideCombineGUI**: 图形用户界面 ### 打包技术 - 使用PyInstaller进行打包 - 单文件模式,所有依赖打包在一起 - 无窗口控制台,纯GUI应用 - 支持UPX压缩减小体积 ### 性能优化 - 文件I/O操作优化 - 内存使用优化 - 编码检测缓存 - 界面响应优化 ## 📝 使用示例 ### 目录结构示例 ``` PDF文件夹/ ├── CH-875 1-3/ │ └── FreePic2Pdf_bkmk.txt ├── CH-875 4-6/ │ └── FreePic2Pdf_bkmk.txt TXT源文件/ ├── CH-875 1-3.txt ├── CH-875 4-6.txt 输出路径/ └── CH-875.txt # 合并后的文件 ``` ### 输出格式示例 ``` title:文档标题 Other titles:其他标题 Volume:卷期信息 ISBN:ISBN号码 creator:创作者 contributor:贡献者 issuedDate:发行日期 publisher:出版社 place:出版地 Classification number:分类号 page:页数 tableOfContents: 书签标题1---------------页码1
书签标题2---------------页码2
subject:主题 date:日期范围 spatial:地理信息 Other ISBN:其他ISBN Other time:其他时间 url:链接地址 ``` ## 🔍 故障排除 ### 常见问题 **Q1:程序无法启动** - 检查是否有杀毒软件阻止运行 - 确认文件没有损坏 - 尝试以管理员身份运行 **Q2:找不到文件** - 检查输入路径是否正确 - 确认文件权限 - 查看详细日志输出 **Q3:编码问题** - 程序已支持多种编码,会自动检测 - 如果仍有问题,请检查源文件编码 - 输出统一使用UTF-8 with BOM **Q4:打包失败** - 确保Python环境正常 - 安装最新版PyInstaller:`pip install --upgrade pyinstaller` - 检查是否有足够的磁盘空间 ## 📞 技术支持 - 开源项目,代码完全透明 - 使用Python标准库,无第三方依赖 - 遵循PEP 8编码规范 - 完整的错误处理机制 ## 📜 许可证 本项目采用MIT许可证,可自由使用和分发。 --- **版本:v2.0** **更新日期:2024-11-24** **开发语言:Python 3.7+**