步骤
- 复制目录页内容,直接丢给ai
- 复制下面脚本,丢给ai,让生成新的脚本
PAGE_OFFSET = 14
ENTRIES: list[tuple[int, str, int]] = [
(0, "第1章 …", 2),
(1, "1.1 …", 4),
]
def toc_page_to_index(toc_page: int, page_count: int) -> int:
one_based = toc_page + PAGE_OFFSET
idx = one_based - 1
return max(0, min(idx, page_count - 1))
reader = PdfReader("in.pdf")
writer = PdfWriter()
for page in reader.pages:
writer.add_page(page)
stack: list[tuple[int, object]] = []
for level, title, toc_page in ENTRIES:
page_index = toc_page_to_index(toc_page, len(reader.pages))
while stack and stack[-1][0] >= level:
stack.pop()
parent = stack[-1][1] if stack else None
ref = writer.add_outline_item(title, page_index, parent=parent)
stack.append((level, ref))
with open("out.pdf", "wb") as f:
writer.write(f)
- 执行脚本
> py scripts/add_react_design_pdf_bookmarks.py "XXXX.pdf"
输入(不修改此文件): XXXX.pdf
输出(请打开此文件看书签): XXXX_bookmarked.pdf
处理中…
[完成] 已写入 164 条书签。
页码规则: PDF 页码(1-based) = 印刷页 + 14;当前 PDF 总页数 368。
提示: 阅读器里请打开上面的「输出」文件;原文件没有书签。
- chrome打开pdf,逐个点击目录跳转,对照是否正常