Skip to content

overwatchd/PdfRename

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

9 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

PDF 文件重命名工具

一个Windows GUI应用程序,可以自动读取PDF文件的标题并重命名。

功能特性

主要功能:

  • 📁 支持拖拽单个PDF文件或整个目录
  • 📄 自动提取PDF文件的标题(优先从元数据,其次从第一页文本)
  • 👁️ 右键预览 - 右键点击文件选择"预览"查看PDF第一页
  • 🔄 批量重命名多个PDF文件
  • ✅ 自动清理标题中的换行符和非法字符
  • ⚙️ 避免文件名冲突(自动添加序号)
  • 📝 完整的日志记录功能
  • 🗑️ 快捷键/菜单删除 - 按 Delete 或 Backspace 删除,或右键选择删除
  • 📂 双击/菜单打开 - 双击文件或右键选择打开

安装步骤

1. 安装 Python 环境

确保你已安装 Python 3.7 或更高版本。

2. 安装依赖包

pip install -r requirements.txt

主要依赖:

  • PyQt5: 用于GUI界面
  • pdfplumber: 提取PDF文本和元数据
  • PyMuPDF: 渲染PDF为图像进行预览
  • Pillow: 图像处理(PyMuPDF的依赖)

3. 运行程序

python main.py

或直接双击运行 run.bat 文件

打包成独立exe程序

如果你想将程序打包成独立的exe可执行文件(无需安装Python),可以使用提供的打包脚本:

方法一:使用批处理文件(推荐)

直接双击 build.bat 文件

方法二:使用Python脚本

python build_exe.py

打包说明

  • 打包脚本会自动:
    1. 检查 icon.ico 文件是否存在
    2. 检查并安装 PyInstaller(如果未安装)
    3. 使用 PyInstaller 打包程序为单文件exe
    4. 设置程序图标
  • 打包完成后,exe文件位于 dist\PDF重命名工具.exe
  • 打包后的程序可以在任何Windows系统上运行,无需安装Python环境
  • 程序图标会同时应用到窗口和exe文件

使用方式

  1. 启动应用程序 - 运行 python main.py

  2. 添加PDF文件

    • 将PDF文件拖入窗口中的"已添加的文件"框中
    • 或者拖入包含PDF文件的整个文件夹
    • 程序会自动搜索目录中的所有PDF文件
  3. 预览和管理文件

    • 👁️ 左键单击选中文件时,自动显示预览窗口(显示PDF第一页)
    • 预览窗口保持显示,直到:
      • 点击其他文件(自动显示新文件的预览)
      • 点击列表外的区域(关闭预览)
    • 💬 右键点击任何文件,选择下列选项:
      • "预览" - 手动打开预览窗口
      • "打开" - 用系统默认应用打开PDF
      • "删除" - 从列表中删除此文件
    • 或使用快捷方式:
      • 双击文件用默认应用打开
      • 选中文件后按 DeleteBackspace 删除
  4. 重命名

    • 点击"开始重命名"按钮
    • 程序会自动:
      • 读取每个PDF的标题
      • 清除标题中的换行符和特殊字符
      • 将标题作为新的文件名
    • 完成后会显示结果统计

工作原理

标题提取逻辑

程序按以下优先级提取PDF标题:

  1. PDF元数据标题 - 如果PDF文件包含标题元数据,直接使用
  2. 第一页文本 - 如果没有元数据,读取第一页的第一行非空文本
  3. 原始文件名 - 如果上述方法都失败,保持原始文件名

字符清理

  • ✂️ 移除所有换行符 (\n, \r)
  • 🚫 移除不允许在Windows文件名中出现的字符 (<, >, :, ", /, \, |, ?, *)
  • 📏 合并多余的空格

文件名冲突处理

如果新文件名已存在,程序会自动添加数字后缀:

  • 原文件:document.pdf
  • 新文件:新标题.pdf
  • 如果已存在:新标题_1.pdf, 新标题_2.pdf

常见问题

Q: 程序无法读取某些PDF的标题?

A: 这可能是因为PDF文件本身没有元数据标题,或第一页不包含文本。此时程序会保留原始文件名。

Q: 如何修改提取的标题格式?

A: 编辑 PDFTitleExtractor._clean_title() 方法中的清理逻辑。

Q: 可以同时处理大量PDF文件吗?

A: 可以。但处理速度取决于PDF文件的大小和系统性能。

故障排除

依赖安装失败

# 升级pip
python -m pip install --upgrade pip

# 重新安装依赖
pip install -r requirements.txt --no-cache-dir

GUI显示异常

  • 确保Windows系统已更新
  • 尝试重新启动程序

文件无法重命名

  • 检查文件是否被其他程序占用
  • 确保有写入权限
  • 查看日志消息了解具体错误

许可证

MIT License

作者

Created by GitHub Copilot

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors