如何从AutoCAD生成的批量PDF中提取每页页面名称?
从AutoCAD批量生成的PDF中提取页面名称
AutoCAD导出的批量PDF,其页面名称通常不会以普通文本形式存在于页面内容中,而是存储在PDF的页面属性或书签结构里,以下是几种可行的提取方式:
1. 直接读取页面的Label属性(最常用)
AutoCAD批量导出PDF时,默认会将图纸名称设置为PDF页面的label属性,用PyMuPDF可以直接获取:
import fitz pdfLocation = "TestPDF.pdf" doc = fitz.open(pdfLocation) for page_idx in range(doc.page_count): page = doc[page_idx] # 获取页面名称(AutoCAD导出的PDF通常存在这里) page_name = page.label print(f"第{page_idx+1}页名称: {page_name}") doc.close()
2. 从书签/大纲中匹配对应页面
如果PDF包含书签(AutoCAD导出时可勾选生成书签),书签标题通常对应页面名称,可通过大纲关联到页面:
import fitz pdfLocation = "TestPDF.pdf" doc = fitz.open(pdfLocation) # 获取文档大纲(书签) toc = doc.get_toc() for entry in toc: # entry格式:[层级, 标题, 页码],页码从1开始 level, title, page_num = entry print(f"页面{page_num}名称: {title}") doc.close()
3. 检查页面元数据或自定义属性
少数情况下,AutoCAD会将页面名存入页面的元数据字典,可尝试读取:
import fitz pdfLocation = "TestPDF.pdf" doc = fitz.open(pdfLocation) for page_idx in range(doc.page_count): page = doc[page_idx] # 获取页面元数据 page_meta = page.info # 检查是否存在自定义字段(不同版本AutoCAD可能有差异) if "Title" in page_meta: print(f"第{page_idx+1}页名称: {page_meta['Title']}") doc.close()
说明
你之前用page.get_text()找不到是因为页面名称不是绘制在页面上的可见文本,而是PDF文件的结构化属性,不属于页面内容范畴。
内容的提问来源于stack exchange,提问作者Stark Arpit
相关产品推荐
相关产品推荐

