PDF 书签

我要提建议

给 PDF 编辑目录(大纲):改标题、改目标页码、上下移动、增删条目、加子书签 —— 没有书签的文件也能从零加一套,导出后阅读器的目录里就能点着跳。

相关工具

这个工具是做什么的

PDF 的书签(大纲)就是阅读器侧边栏那份目录:点一条能直接跳到对应页。它和正文是两套东西 —— 正文里画着「第一章」几个字,不代表书签里就有这一条;反过来删正文也不会动书签。所以常见两种需求:一是**修已有的目录**(章节标题改了、页码因为增删页面全偏了、别人给的 PDF 目录里混着广告条目),二是**给完全没书签的文件加一套**(自己扫描的书、别人随手导出的报告)。这个工具两件事都做:打开文件先把现有书签按层级列出来,逐条改标题与目标页码、上下移动调整顺序、删除不需要的、在任意条目下加子书签,也能在最外层新增条目;改完导出,阅读器打开就有目录。两点如实说明:① 页码必须落在 1 到总页数之间,写到范围外的条目会落到最后一页(界面上会标出来,不静默);② pdf-lib 本身没有写大纲的 API,这一层是本项目自己按 PDF 规范手工构造 /Outlines 对象树写的,所以**每次导出都会把产物重新读一遍复核条目数**,不拿「命令跑完了」当成功。全程在本机用本地引擎完成,数据不出设备。

使用方法

  1. 选择一个 PDF;工具会读出现有书签(按层级显示)与总页数。
  2. 逐条改:标题直接改输入框、页码填数字(必须是 1 到总页数之间);用 ↑ ↓ 调顺序、删除不要的、在条目下「加子书签」。
  3. 没有书签的文件也能用「新增顶层书签」从零加一套 —— 先加条目、再填标题与页码。
  4. 点「导出 PDF」,工具写出文件并把书签重新读一遍复核条目数,然后点「导出文件」保存。

常见问题

为什么改完正文,书签页码会不对?
因为书签只是一张「标题 → 页码」的清单,它不会随正文自动移动。你在别处删了、插入了页面,原有书签的目标页码就全偏了 —— 这个工具最常见的用法就是「页面动过之后重新对齐目录」,改完导出即可。
能给没有书签的 PDF 加目录吗?
能。打开文件时如果它本来没有大纲,列表就是空的,点「新增顶层书签」加条目、填标题与页码即可。常用的做法是先在阅读器里翻一遍记下几个关键章节的页码,再一条条加进来。
页码填错了/超出范围会怎样?
没有页码或页码超出 1–总页数的条目,导出时会落到最后一页(工具里会标出「会落到最后一页」)。这样做是因为 PDF 的 /Dest 必须指向一个真实页面;工具不会静默丢掉你的条目,也不会让阅读器打开时报错。
导出后为什么说「已写入 N 条」而不是直接下载?
因为写大纲是手工构造 PDF 对象,属于容易「写错了还看不出来」的那类操作。所以工具会把产物重新用 pdf.js 读一遍、数出真实读到的书签条数,和你编辑的一致才显示成功。如果读到的数量对不上,界面会如实告诉你。
会改动正文吗?
不会。工具只重写大纲对象树(以及 PDF 的交叉引用表),页面内容、文字层、页面尺寸都不动。文件与数据全程在本机处理,数据不出设备。