— https://github.com/fangvv/PdfAutoRenameTools
| English README | 中文说明 |
你还在手动一篇一篇地给下载的论文 PDF 重命名吗?
当你从学术搜索引擎批量下载论文时,得到的往往是 paper.pdf、document(1).pdf、2401.08392.pdf 这样毫无信息量的文件名。你需要逐一打开、找到标题、关闭、重命名——一篇论文至少浪费 10 秒钟。如果你有上百篇文献要整理,这件事将吞噬你整整一个下午。
PdfAutoRenameTools 帮你一键解决这个问题。
它能够自动读取 PDF 首页的排版信息,精准识别出论文标题,并将文件重命名为标题本身。整个过程无需人工干预,批量处理,瞬间完成。
本工具的核心算法源自王炳宁先生公开在其主页上的原始版本。本人在日常科研中长期使用,受益良多。在使用过程中发现原版存在一个已知问题——部分论文的标题只能截取到第一行,导致重命名不完整。
为了修正这一问题,我通过反编译工具 luyten 对原始 jar 进行了逆向分析,在充分理解源码逻辑后,对标题提取算法做了针对性优化,并在此基础上新增了 GUI 图形界面,使操作体验更加友好。
如王炳宁先生认为代码公开有不妥之处,可随时联系我删除。
生成的 jar 文件位于 out\artifacts\PdfAutoRenameTools_jar\ 目录下。
java -jar PdfAutoRenameTools_GUI.jar
启动后弹出图形界面:
表格中状态以颜色区分:🟢 绿色 = 已重命名,🔴 红色 = 失败或跳过。
java -jar PdfAutoRenameTools.jar 目录名
程序会递归扫描指定目录下的所有 PDF 文件,根据首页最大字号文字自动重命名。
标题识别的核心逻辑位于 TextLocationExtender.java:
PDFTextStripper,在解析过程中捕获每个文本片段的内容、字号、坐标src/nlpr/cip/
├── Main.java # 程序入口(命令行)
├── GuiMain.java # GUI 图形界面(Swing)
├── TextLocationExtender.java # PDF 文本解析与标题提取核心
├── Pair.java # 数据结构:(文本, 字号, X坐标, Y坐标)
└── utils.java # 文件目录递归遍历工具
| 库 | 版本 | 用途 |
|---|---|---|
| Apache PDFBox | 2.0.23 | PDF 文件解析与文本提取 |
| Apache Commons Logging | 1.2 | 日志框架 |
| FontBox | 3.0.0-RC1 | PDF 字体信息处理 |
java version "26.0.1" 2026-04-21
Java(TM) SE Runtime Environment (build 26.0.1+8-34)
Java HotSpot(TM) 64-Bit Server VM (build 26.0.1+8-34, mixed mode, sharing)
运行需要 Java 环境,具体版本请自行配置。