如何从pdfplumber.pdf.PDF实例中获取PDF文件名?
从pdfplumber.pdf.PDF实例中获取文件名的方法
pdfplumber的PDF类实例本身不会自动存储文件名,你可以通过以下两种方式解决这个需求:
手动绑定文件名(推荐):在打开PDF文件时,把文件名作为自定义属性附加到PDF实例上,之后在函数中直接读取该属性:
import pdfplumber def your_process_function(pdf): print(pdf.filename) # 输出绑定的文件名 # 打开文件时绑定文件名 with pdfplumber.open("target.pdf") as pdf: pdf.filename = "target.pdf" your_process_function(pdf)从stream属性获取(有局限性):如果PDF是从本地文件打开的,实例的
stream属性对应的文件对象可能包含name属性,可以尝试读取:def your_process_function(pdf): try: filename = pdf.stream.name print(filename) except AttributeError: # 若PDF来自字节流等非本地文件场景,会触发此异常 print("无法获取文件名:该PDF并非从本地文件打开")
注意:第二种方法仅适用于从本地文件创建的PDF实例,如果是从字节流、内存对象等方式生成的PDF,stream不会有name属性,此时必须用第一种手动绑定的方式。
内容的提问来源于stack exchange,提问作者Keegan Skeate
相关产品推荐
相关产品推荐

