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 Noneif page is not None:# 添加条目到列表toc_list.append({'Title': title,'Page': page})# 如果有子条目,递归提取if len(item) > 3 and item[3]: # 子条目在索引3extract_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()# 将列表转换为DataFrametoc_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文件被正确写入