| title | physical_page | pypdf_index |
|---|
| 前言 | 2 | 1 |
| 第一章 观察 | 4 | 3 |
| 观察记录 | 5 | 4 |
| 第二章 设备 | 7 | 6 |
| 设备检查 | 8 | 7 |
| 第三章 实践 | 9 | 8 |
| 第四章 复查 | 11 | 10 |
from pathlib import Path
import csv
from pypdf import PdfReader,PdfWriter
p=Path(__file__).parent;r=PdfReader(p/'manual-original.pdf');w=PdfWriter()
for page in r.pages:w.add_page(page)
parent=None
for row in csv.DictReader((p/'chapter-map.csv').open(encoding='utf-8-sig')):
item=w.add_outline_item(row['title'],int(row['physical_page'])-1,parent=parent if row['level']=='2'else None)
if row['level']=='1':parent=item
w.write(p/'manual-bookmarked-reference.pdf')