You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

寻求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库实现:

  1. 先安装依赖:
    pip install pymupdf
    
  2. 编写排序脚本:
    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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.14 09:09:54