203 lines
4.9 KiB
Markdown
203 lines
4.9 KiB
Markdown
# 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<br/>
|
||
书签标题2---------------页码2<br/>
|
||
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+** |