如何使用PyPDF2提取PDF页面尺寸、方向及创建日期等元数据
PyPDF2提取PDF元数据及页面属性教程
基础概念说明
- 文档级元数据:PDF全局属性,包含标题、创建日期、修改日期、作者等信息,所有页面共享
- 页面级属性:单页独有属性,包含页面尺寸、横竖页方向等,不同页面可能存在差异
完整实现代码
from PyPDF2 import PdfFileReader # 读取PDF文件,with语法会自动关闭文件避免资源泄露 with open("document1.pdf", "rb") as f: input1 = PdfFileReader(f) # 1. 获取页数 page_count = input1.getNumPages() print(f"document1.pdf 总页数:{page_count}") # 2. 获取文档级元数据 doc_info = input1.getDocumentInfo() # 标题 title = doc_info.title if doc_info.title else "无标题" print(f"PDF标题:{title}") # 创建日期 存储格式通常为D:YYYYMMDDHHmmSS create_date = doc_info.get('/CreationDate', "无创建日期信息") print(f"创建日期:{create_date}") # 其他可选元数据:作者/修改日期/制作者 author = doc_info.get('/Author', "无作者信息") modify_date = doc_info.get('/ModDate', "无修改日期信息") creator = doc_info.get('/Creator', "无制作者信息") # 3. 逐页获取页面尺寸、横竖方向 for page_idx in range(page_count): current_page = input1.getPage(page_idx) # 获取页面对应的媒体框(定义页面实际尺寸) media_box = current_page['/MediaBox'] # 转换为标准数值(默认单位为磅,1磅=1/72英寸) page_width = float(media_box.getWidth()) page_height = float(media_box.getHeight()) # 判断横竖方向:宽度大于高度为横向,否则为纵向 page_orient = "横向" if page_width > page_height else "纵向" print(f"第{page_idx+1}页:尺寸{page_width:.2f}*{page_height:.2f}磅,方向{page_orient}")
注意事项
- 如果PDF设置了密码保护,需要先调用
input1.decrypt("密码")方法解密后再读取属性 - 部分PDF生成时未写入元数据字段,对应取值会返回空,代码中已做默认值兼容
- 页面尺寸默认单位是磅,如需转换为毫米可乘以
0.352778,转换为厘米可乘以0.0352778
内容的提问来源于stack exchange,提问作者x89
相关产品推荐
相关产品推荐

