寻求PyPDF/PikePDF技术建议:PDF书签按日期倒序重排
重排PDF书签(日期倒序)的技术方案
方案一:命令行工具快速处理(适合批量操作)
用MuPDF自带的mutool工具,三步完成书签导出、排序、导入:
- 导出PDF书签为JSON格式文件:
mutool show 原医疗记录.pdf outline > bookmarks.json - 用
jq工具对书签数组倒序排序(YYYY-MM-DD格式的日期字符串,倒序后最新日期自动置顶):jq '.[] |= reverse' bookmarks.json > sorted_bookmarks.json - 将排序后的书签导入并生成新PDF:
mutool clean -o 排序后医疗记录.pdf 原医疗记录.pdf sorted_bookmarks.json
方案二:Python代码自定义处理(灵活可控)
适合需要批量处理多份PDF,或有特殊需求的场景,基于PyMuPDF库实现:
- 先安装依赖:
pip install pymupdf - 编写排序脚本:
import fitz def sort_medical_pdf_bookmarks(input_pdf, output_pdf): doc = fitz.open(input_pdf) # 获取所有顶级书签(默认医疗记录书签为顶级无嵌套) toc = doc.get_toc() # 按书签名称倒序排序,日期开头的字符串直接倒序即可实现最新日期置顶 sorted_toc = sorted(toc, key=lambda item: item[1], reverse=True) # 替换原有书签 doc.set_toc(sorted_toc) # 保存新文档 doc.save(output_pdf) doc.close() # 调用示例 sort_medical_pdf_bookmarks("原医疗记录.pdf", "排序后医疗记录.pdf")
注意事项
- 操作前务必备份原PDF,避免数据丢失
- 确保书签名称的日期格式统一为
YYYY-MM-DD,否则字符串排序可能出错 - 若存在嵌套书签,需对代码做递归排序调整(你的场景大概率为顶级书签,无需额外处理)
内容的提问来源于stack exchange,提问作者Vladimir Buzalka
相关产品推荐
相关产品推荐

