三步为PDF添加目录书签pdf-bookmark上手指南【免费下载链接】pdf-bookmarkpdf bookmark generator 目录 书签 大纲项目地址: https://gitcode.com/gh_mirrors/pd/pdf-bookmark你刚下载了一本400页的技术书目录和阅读器的页码对不上想找一章得翻半天。pdf-bookmark 就是个干这件事的开源工具把目录交给它三步生成带书签的新PDF原文件不动。它是什么解决什么问题pdf-bookmark 是一个 Java 桌面小工具界面用 Swing 写底层靠 iText 往 PDF 里写书签大纲。它的定位非常窄只把一份目录文本变成可点击的层级书签。网上大量PDF书籍天生没有书签扫描版尤其常见手动一条条点书签既慢又容易点错它就是给这个过程提速的。界面总共四样东西顶部的文件路径框、页码偏移量输入框中间的目录编辑区底部的获取目录和生成目录两个按钮没有多余的功能项。上手实操先拿到工具。克隆仓库后在根目录执行./gradlew runWindows 用gradlew.bat run几秒后界面就会弹出来git clone https://gitcode.com/gh_mirrors/pd/pdf-bookmark第一步选PDF文件并设置页码偏移点选择文件挑出目标 PDF。图省事的话把 PDF 直接拖进目录编辑区路径也会自动填好。定偏移量用任意阅读器打开这个 PDF翻到任意有印刷页码的页面看阅读器底部的实际页码和页面上印的书籍页码实际页码减书籍页码就是偏移量。比如下例中阅读器显示 134/402页面印刷页码是 120偏移量填 14。这个框只收整数如果是页码本来就连续的电子版 PDF留空按 0 处理。第二步目录内容的两种填法方式一手动粘贴。把目录文本网上书店详情页、电子书前端都有贴进编辑区每行一个条目格式是章节序号 章节标题 章节页码第1章 基础 1 1.1 Scala解释器 1 1.2 声明值和变量 3 第2章 控制结构和函数 13解析器会自动做几件顺手的事1.1、1.1.1这类数字序号按前缀自动挂成父子层级没有页码的行比如译者序作为顶级书签保留全角空格、多余空白统一归一化所以从网页复制来的乱格式文本大多能直接用。方式二URL 自动抓取。如果书在 china-pub 上直接把书籍详情页 URL 贴进编辑区点获取目录工具会抓下页面里的目录段填回编辑区。这个按钮在输入框内容以http开头时才会点亮。手动粘贴URL 抓取目录来源任意站点或手打仅 china-pub适用场景目录文本已到手懒得复制、站点正好支持额外操作无先点一次获取目录第三步一键生成带书签的PDF文件点生成目录工具会在原文件同目录生成原文件名_含目录.pdf弹窗里给出完整路径。原文件一个字节都不会被改生成效果不满意可以直接删掉重来。打开新文件核对一下跳转比如1.2 声明值和变量这条书签按上面的偏移应该落在第 17 页314。能力边界能做什么不能做什么能做的写多级书签大纲、页码偏移校正、批量容忍各种空格格式读取时还会绕过一部分权限限制所以只是禁止编辑的 PDF 大多也能直接处理。不能做的说清楚免得踩坑不做文字识别。扫描版 PDF 的目录它读不出来得你自己去查或手敲。URL 抓取只适配了 china-pub 一家其他站点一律走手动粘贴。需要输入密码才能打开的真加密 PDF 会被直接拒绝得先另想办法解除。图形界面上没有批量模式一次只处理一个文件绕法见下面进阶部分。几个具体的用法程序员下载了 500 页的扫描版技术书上网书店查一次目录贴进去两分钟收工省掉一个下午的手动点击。研究生把十几篇论文合并成一个 PDF手敲标题起始页的简易目录生成后按论文跳转查引用。古籍扫描版没有 OCR 可用目测几章的大致页码敲进去跳转落在正确章节附近就够用了。进阶用法用 API 批量处理。界面是单文件的但核心类PDFUtil暴露了静态方法addBookmark(目录内容, 源文件, 目标文件, 偏移量)写个小脚本循环调用即可处理整个文件夹格式和界面完全一致。解析失败时看正则。某一行目录没被识别成书签时去PDFUtil.java里找bookmarkPattern这个正则能直观看到一行文本要长什么样才算合法条目。给自己常逛的站点加抓取器。ChinaPubContentProvider是目前唯一的抓取实现它实现了ContentsProvider接口再注册进PDFContents。会用 Jsoup 的话照抄这个文件加一个自己站点的解析后面的生成流程原样复用。遇到问题怎么办书签跳转到了错误的页面。别慌九成是偏移量的问题。这是实际页码与书籍页码差值算错常见的是差一页。拿一条页码已知的书签验证点开后看阅读器显示的实际页码它和目录页码的差就是正确偏移量改完重新生成即可。获取目录按钮是灰的。按钮只在编辑区内容以http开头时启用。粘贴的 URL 前面带了空格、引号都会被判定失败。把内容清干净重新贴或干脆改用手动粘贴。提示PDF已加密无法完成修改。这是 PDF 设置了打开密码和权限限制不是一回事——只有禁止编辑的 PDF 通常能照常处理带密码的才过不去。先用其他工具解除密码再生成书签。生成的书签缺条目或层级不对。多半是某行目录没匹配上格式典型的是页码被复制到了下一行。检查原文本保证每个条目独占一行、以页码数字结尾重新生成。项目源码速览项目很小核心逻辑五个文件就能看完src/main/java/com/ifnoelse/pdf/gui/Main.java— Swing 界面文件选择、拖拽、偏移量校验都在这里src/main/java/com/ifnoelse/pdf/PDFUtil.java— 目录行解析、层级构建、写入 PDF 大纲src/main/java/com/ifnoelse/pdf/Bookmark.java— 书签节点模型递归生成大纲结构src/main/java/com/ifnoelse/pdf/PDFContents.java— 按 URL 分派目录抓取器src/main/java/com/ifnoelse/pdf/ChinaPubContentProvider.java— china-pub 页面抓取实现完整流程就是选文件、定偏移、交目录三件事。下次再遇到一本没有书签的PDF去克隆下来跑一遍试试几百页的书三分钟就能驯服。【免费下载链接】pdf-bookmarkpdf bookmark generator 目录 书签 大纲项目地址: https://gitcode.com/gh_mirrors/pd/pdf-bookmark创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考