首页 > 其他分享 >批量提取当前文件夹pdf书籍目录

批量提取当前文件夹pdf书籍目录

时间:2024-11-17 14:30:41浏览次数:1  
标签:批量 list toc item 文件夹 PDF pdf 目录


import fitz  # PyMuPDF
import pandas as pd
import os

# 获取当前文件夹中所有的PDF文件
pdf_files = [f for f in os.listdir('.') if f.endswith('.pdf')]

# 提取目录信息的函数
def extract_toc(toc, toc_list, level=0):
    for item in toc:
        # 确保目录项至少包含标题
        if len(item) > 1 and item[1]:
            title = item[1]
            # 确保页码是数字类型
            page = item[2] if len(item) > 2 and isinstance(item[2], int) else None
            if page is not None:
                # 添加条目到列表
                toc_list.append({
                    'Title': title,
                    'Page': page
                })
            # 如果有子条目,递归提取
            if len(item) > 3 and item[3]:  # 子条目在索引3
                extract_toc(item[3], toc_list, level + 1)  # 传递level + 1

# 遍历所有PDF文件
for pdf_file in pdf_files:
    # 打开PDF文件
    document = fitz.open(pdf_file)
    
    # 获取PDF的目录
    toc = document.get_toc(simple=False)
    
    # 初始化toc_list以存储新的PDF文件的目录信息
    toc_list = []
    
    # 提取目录信息
    extract_toc(toc, toc_list)
    
    # 关闭PDF文件
    document.close()
    
    # 将列表转换为DataFrame
    toc_df = pd.DataFrame(toc_list)
    
    # 将DataFrame输出到CSV文件,文件名与PDF文件同名
    output_filename = pdf_file.rsplit('.', 1)[0] + '.csv'  # 正确地获取文件名并添加.csv扩展名
    toc_df.to_csv(output_filename, index=False, encoding='utf-8')  # 确保CSV文件被正确写入

标签:批量,list,toc,item,文件夹,PDF,pdf,目录
From: https://www.cnblogs.com/redufa/p/18550522

相关文章

  • Typora右键打开文件夹/设置右键打开方式/Windows右键管理器
    Typora右键打开文件夹/设置右键打开方式/Windows右键管理器/管理右键/编辑右键_typeoa添加到右键打开菜单中-CSDN博客首先下载一个右键管理器ContextMenuManager下载地址:GitHub:Releases·BluePointLilac/ContextMenuManager(github.com)Gitee:ContextMenuManager发......
  • 美团商家联系电话采集软件团购外卖信息批量提取器
    定义目标:明确需要采集的数据,如商家名称、地址、评分、销量等。分析页面结构:通过浏览器的开发者工具,分析美团团购或外卖页面的HTML结构,找出包含所需数据的标签。模拟用户请求:使用requests库模拟用户访问美团页面,可能需要处理登录、反爬虫机制(如Cookies、Headers、验证码等)。解析......
  • 关于HDFS路径文件夹名称的问题
    问题发现​ 最开始的需求:修改/origin_data/gmall/db目录下所有以inc结尾的文件夹里的文件夹(名称为2024-11-15)修改为2020-6-14问gpt写了个脚本:#!/bin/bash#遍历/origin_data/gmall/db下所有以"inc"结尾的文件夹fordirin$(hdfsdfs-ls/origin_data/gmall/db|grep......
  • Wincc 7.5SP1下VBA编程练习:批量设置看见权限
    这一篇学习笔记我在新浪发表过,那边还在审核。在这里也记录一下。前两天QQ群里面有人询问能不能快速的给WINCC画面上的控件设置操作权限,这个是比较容易的。比如有个画面有10个IO域,在VBA编辑器写下面的脚本:SubIOField_PropertyTrigger1()DimobjectsDimobjDimobjdynamicDi......
  • 吐槽ubuntu上pdf阅读器
    !https://zhuanlan.zhihu.com/p/6483861108细数(吐槽)ubuntu(linux)上pdf阅读器不好用的地方作为一枚研究僧,有使用ubuntu(linux)的需求,同时也有在ubuntu上看学术文献的需求(毕竟有时候懒得切换回windows)。对于pdf学术文献阅读,最需要功能是高亮、点击跳转、(跳转后)返回、批注......
  • 如何使用python批量读取母文件夹下的子文件夹名称
    文件准备如上图所示,我想要将dir中的所有的子文件夹的文件名打印出来代码准备importoscutrrent_dictionary=os.getcwd()#该值所代表的含义就是打开文件的绝对路径cutrrent_dictionary="D:\400-File\000-Project\000-Pycharm\005-CSDN_File"print(cutrrent_dic......
  • java操作pdf文本域填充内容
    引入jar包<dependencies><dependency><groupId>com.itextpdf</groupId><artifactId>itext7-core</artifactId><version>7.2.5</version><type>pom&......
  • 合并具有文本框的Word文档:VBA代码批量操作
      本文介绍基于VBA语言,对大量含有图片、文本框与表格的Word文档加以批量自动合并,并在每一次合并时添加分页符的方法。  在我们之前的文章中,介绍过基于Python语言的python-docx(docx)模块与docxcompose模块,对大量Word文档加以合并的方法;但是,基于这种方法,我们无法对具有非明确大......
  • 批量检测微信单向好友,超实用!
    ​随着时间推移,大家免不了加好友。而微信的“删除好友”功能一直被广大网友诟病:无法查看单向删除好友。其实最近(2024-10-23)微信上线了一项新功能,当微信好友量到达1万上限后可查单删好友(安卓,iOS均可)。但对于大多数人来说,门槛太高了吧......
  • 【Adobe Acrobat pro 2024软件下载与安装教程-PDF编辑神奇】
    1、安装包「AdobeAcrobat2024」:链接:https://pan.quark.cn/s/86f8683afe5c提取码:4uur2、安装教程(建议关闭杀毒软件和系统防护)1)       下载软件安装包,打开安装目录,双击Setup.exe安装,弹出安装对话框   2)       点击安装按钮  3)     ......