我找到了解决方案。首先,我创建一个带有 pdf 标题的父书签。然后我得到pdf中所有现有的书签pdf.getOutlines()
并迭代输出:
parent = merger.addBookmark(f"{title}", pages_total - pages_one, parent=None)
for i in pdf.getOutlines():
if isinstance(i, list): # if nested bookmarks exists
nested_boomarks(parent=child, bookmarks=i, merger=merger, pdf=pdf)
else:
child = merger.addBookmark(i["/Title"], pdf.getDestinationPageNumber(i), parent=parent)
当书签内有书签时,我使用此递归函数。
def nested_boomarks(parent, bookmarks, merger, pdf):
for i in bookmarks:
if isinstance(i, list):
nested_boomarks(child, i, merger, pdf)
else:
child = merger.addBookmark(i["/Title"], pdf.getDestinationPageNumber(i), parent=parent)
This way I get the following output: