# 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+**