# 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
第一节 背景介绍---------------3
第二节 研究目的---------------5
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环境的现代化软件解决方案!