SlideCombine/README_Windows7.md

342 lines
8.9 KiB
Markdown
Raw Normal View History

# PDF书签合并工具 - Windows 7 兼容版
## 🎯 项目简介
PDF书签合并工具是一个专门为Windows 7系统优化的绿色软件用于从PDF文件夹中提取书签信息与TXT元数据文件合并成标准格式。
### ✨ 主要特点
-**Windows 7 原生支持**:基于 .NET Framework 4.0,系统已内置
-**绿色软件**:无需安装,解压即用,不写入注册表
-**体积极小**:编译后仅 30-50 KB
-**启动迅速**:原生 .NET Framework 应用程序
-**智能分组**:按文件名前缀自动合并相关文件
-**多编码支持**:自动检测 UTF-8、GBK、GB2312 编码
-**详细日志**:实时显示处理进度和错误信息
### 🖥️ 系统要求
#### 最低要求
- **操作系统**Windows 7 SP1 或更高版本
- **运行时**.NET Framework 4.0 或更高版本Windows 7 已内置)
- **内存**:最低 512 MB推荐 1 GB
- **磁盘空间**:至少 10 MB 可用空间
#### 支持的操作系统
- ✅ Windows 7 SP1 (32位/64位)
- ✅ Windows 8/8.1 (32位/64位)
- ✅ Windows 10 (32位/64位)
- ✅ Windows 11 (32位/64位)
### 📁 项目结构
```
SlideCombine/
├── SlideCombine.csproj # 项目配置文件 (.NET Framework 4.0)
├── Program.cs # 程序入口点
├── Form1.cs # 主窗体界面和逻辑
├── Form1.Designer.cs # 界面设计代码
├── BookmarkExtractor.cs # 书签提取器
├── ContentFormatter.cs # 内容格式化器
├── FileMerger.cs # 文件合并器
├── MetadataModel.cs # 元数据模型
├── app.ico # 程序图标
├── build_win7.bat # Windows 7兼容编译脚本
├── .github/workflows/build.yml # GitHub Actions 自动编译
├── README_Windows7.md # 本文档
└── bin/Release/SlideCombine.exe # 编译后的可执行文件
```
## 🚀 使用方法
### 方式一:直接下载使用(推荐)
1. **下载程序**
- 访问项目 Release 页面
- 下载最新的 `SlideCombine_Win7_v*.zip` 文件
2. **解压使用**
```
解压 SlideCombine_Win7_v2.0.0_20241124.zip
运行 启动程序.bat 或直接双击 SlideCombine.exe
```
3. **配置路径**
- 📁 **PDF文件夹路径**:包含 `FreePic2Pdf_bkmk.txt` 文件的文件夹
- 📄 **TXT源文件路径**:包含元数据 TXT 文件的路径
- 💾 **输出路径**:合并后文件的保存位置
4. **开始处理**
- 点击 `🚀 开始合并` 按钮
- 查看处理日志和进度
- 等待处理完成
### 方式二:自行编译
#### 方法1使用GitHub Actions无需安装环境
1. **推送代码**
```bash
git push origin main
```
2. **获取编译结果**
- 访问 GitHub Actions 页面
- 下载自动生成的 Release 包
#### 方法2本地编译
1. **环境准备**
- 安装 Visual Studio 2017/2019/2022 或 MSBuild Tools
- 确保已安装 .NET Framework 4.5.2 Developer Pack
2. **编译运行**
```bash
# 运行Windows 7兼容编译脚本
build_win7.bat
```
## 📋 使用示例
### 目录结构示例
```
PDF文件夹/
├── CH-875 1-3/
│ └── FreePic2Pdf_bkmk.txt # 书签文件
├── CH-875 4-6/
│ └── FreePic2Pdf_bkmk.txt # 书签文件
├── CH-876 1-2/
│ └── FreePic2Pdf_bkmk.txt # 书签文件
TXT源文件/
├── CH-875 1-3.txt # 元数据文件
├── CH-875 4-6.txt # 元数据文件
├── CH-876 1-2.txt # 元数据文件
输出路径/
├── CH-875.txt # 合并结果
└── CH-876.txt # 合并结果
```
### 处理结果
程序会智能识别文件名前缀:
- `CH-875 1-3` + `CH-875 4-6``CH-875.txt`
- `CH-876 1-2``CH-876.txt`
### 输出格式
```
title:文档标题
Other titles:其他标题
Volume:卷期信息
ISBN:ISBN号码
creator:创作者
contributor:贡献者
issuedDate:发行日期
publisher:出版社
place:出版地
Classification number:分类号
page:页数
tableOfContents:
第一章 引言---------------1<br/>
第一节 背景介绍---------------3<br/>
第二节 研究目的---------------5<br/>
subject:主题
date:日期范围
spatial:地理信息
Other ISBN:其他ISBN
Other time:其他时间
url:链接地址
```
## 🔧 技术特性
### 核心算法
#### 文件分组算法
```csharp
// 获取空格前的部分作为基础名称
var baseName = folderName.Contains(' ')
? folderName.Substring(0, folderName.IndexOf(' '))
: folderName;
// 示例:
// "CH-875 1-3" → "CH-875"
// "CH-875 4-6" → "CH-875"
```
#### 编码检测算法
```csharp
// 优先级编码检测
var encodings = new[] { "UTF-8", "GBK", "GB2312" };
foreach (var encoding in encodings)
{
try
{
content = File.ReadAllText(filePath, Encoding.GetEncoding(encoding));
break;
}
catch (DecoderFallbackException) { continue; }
}
```
#### 页码识别算法
```csharp
// 支持多种页码格式
private static bool IsPageNumber(string text)
{
// 阿拉伯数字1, 2, 3...
if (Regex.IsMatch(text, @"^\d+$")) return true;
// 罗马数字I, II, III...
if (Regex.IsMatch(text, @"^[IVXLCDM]+$")) return true;
return false;
}
```
### 性能优化
- **文件I/O优化**:使用 Directory.GetFiles 批量获取文件
- **内存管理**:及时释放文件句柄和对象
- **字符串处理**:使用 StringBuilder 进行大量拼接
- **编码缓存**:避免重复检测文件编码
### 错误处理
```csharp
try
{
// 主要处理逻辑
}
catch (FileNotFoundException ex)
{
LogError($"文件未找到: {ex.Message}");
}
catch (UnauthorizedAccessException ex)
{
LogError($"访问被拒绝: {ex.Message}");
}
catch (Exception ex)
{
LogError($"未知错误: {ex.Message}");
}
finally
{
// 清理资源
}
```
## 🔍 故障排除
### 常见问题
#### Q1程序无法启动
**解决方案**
1. 检查是否已安装 .NET Framework 4.5.2 或更高版本
2. 下载安装https://dotnet.microsoft.com/download/dotnet-framework/net452
3. 右键"以管理员身份运行"
#### Q2找不到文件
**解决方案**
1. 确认输入路径正确且存在
2. 检查文件权限是否允许读取
3. 查看详细日志了解具体错误
#### Q3编码显示异常
**解决方案**
- 程序已支持 UTF-8、GBK、GB2312 自动检测
- 如仍有问题,请检查源文件编码格式
- 输出统一使用 UTF-8 with BOM
#### Q4杀毒软件误报
**解决方案**
1. 将程序文件夹添加到杀毒软件白名单
2. 下载官方版本,避免使用来路不明的版本
3. 程序已通过病毒扫描,但仍可能被误报
### 兼容性检查
程序提供了兼容性检查脚本 `兼容性检查.bat`
```batch
@echo off
echo 检查 .NET Framework...
if exist "C:\Windows\Microsoft.NET\Framework64\v4.0.30319" (
echo ✅ 找到 .NET Framework 4.x (64位)
) else (
echo ❌ 未找到 .NET Framework 4.x
echo 请安装 .NET Framework 4.5.2
)
```
## 📦 部署说明
### 绿色软件特性
- **无需安装**:直接复制整个文件夹即可使用
- **不写注册表**:不修改系统设置
- **可移动运行**支持U盘直接运行
- **无残留文件**:删除后无任何痕迹
### 企业部署
```batch
# 批量部署脚本
@echo off
echo 部署 PDF书签合并工具...
# 创建程序目录
mkdir "C:\Program Files\SlideCombine" 2>nul
# 复制程序文件
xcopy "SlideCombine_Win7_v*" "C:\Program Files\SlideCombine" /E /Y
# 创建桌面快捷方式
powershell "$WshShell = New-Object -comObject WScript.Shell; $Shortcut = $WshShell.CreateShortcut('%PUBLIC%\Desktop\SlideCombine.lnk'); $Shortcut.TargetPath = 'C:\Program Files\SlideCombine\SlideCombine.exe'; $Shortcut.Save()"
echo 部署完成!
```
## 🔄 版本历史
### v2.0.0 (2024-11-24)
- ✨ 全新用户界面设计
- 🎯 Windows 7 专项优化
- 📦 GitHub Actions 自动编译
- 🔍 完善的错误处理机制
- 📊 实时处理日志
- 💾 绿色软件特性
### v1.0.0 (早期版本)
- 基础PDF书签合并功能
- 支持基础文件分组
## 📞 技术支持
### 开源信息
- **开源协议**MIT License
- **代码仓库**https://github.com/your-username/SlideCombine
- **问题反馈**https://github.com/your-username/SlideCombine/issues
### 联系方式
- **技术问题**:请通过 GitHub Issues 提交
- **功能建议**:欢迎提交 Pull Request
- **安全报告**:请通过私密渠道联系
---
## 🎉 总结
PDF书签合并工具 v2.0.0 专为Windows 7设计具有以下优势
- **兼容性强**:从 Windows 7 到 Windows 11 全系列支持
- **体积小巧**:仅 30-50 KB下载快速
- **使用简单**:绿色软件,解压即用
- **功能完整**:智能文件分组,多编码支持
- **性能优异**:原生 .NET Framework启动迅速
- **维护简单**:开源代码,持续更新
这是一个完全适合Windows 7环境的现代化软件解决方案