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

如何修改代码实现提取20页PDF文件的全部页面页码

PDF全量页码提取失败修复方案

问题根源

代码仅返回单页页码,核心原因是仅读取了reader.pages列表中索引为0的第一个页面对象,没有遍历全部20个页面对象,页码提取逻辑未覆盖全文档。

修复操作

  • 先升级依赖到稳定版,避免旧版本API兼容问题,执行命令:pip install --upgrade PyPDF2
  • 核心修改:移除固定取单页的写法(比如page = reader.pages[0]),通过for循环遍历所有页面对象,逐页提取页码
  • 把页码存储、打印的逻辑放到循环的缩进块内,不要写在循环外,避免只保留最后一次的计算结果

可直接运行的修正代码

from PyPDF2 import PdfReader

# 替换为你的目标PDF文件本地路径
file_path = "your_20page_file.pdf"
reader = PdfReader(file_path)
total_pages = len(reader.pages)
print(f"文档总页数:{total_pages}")

# 遍历所有页面
for page_index, page in enumerate(reader.pages, start=1):
    # 获取物理页序号(从1开始计数)
    page_seq = page_index
    # 尝试读取PDF内置的自定义显示页码(比如前言罗马数字、正文起始页码不为1的场景)
    try:
        show_num = page.label if hasattr(page, 'label') else page_seq
    except Exception:
        show_num = page_seq
    print(f"顺序第{page_seq}页,文档显示页码:{show_num}")

异常排查

  • 如果运行后总页数打印结果不是20,检查PDF文件是否损坏、路径是否正确,加密PDF需要先调用reader.decrypt("密码")解密后再读取
  • 如果使用的是PyPDF2 1.x旧版本,把page.label替换为page["/P"].get_object()即可读取内置页码
  • 不需要自定义显示页码的话,可以直接用循环的page_index作为页码,不需要额外调用属性读取方法

内容的提问来源于stack exchange,提问作者George

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 17:15:41