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