You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.16 04:06:10