使用PyPDF2批量转PDF为TXT仅提取最后一页,求解决方案
解决PDF批量转TXT仅提取最后一页的问题
你的代码只提取了PDF的最后一页,核心原因是直接获取了索引为x-1的页面(即最后一页),没有遍历所有页面内容。以下是修复后的方案:
修改后的代码
import os import PyPDF2 # 目标目录 target_dir = "Documents/Python/" for file in os.listdir(target_dir): if file.endswith(".pdf"): fpath = os.path.join(target_dir, file) # 打开PDF并读取所有页面内容 with open(fpath, 'rb') as pdffileobj: pdfreader = PyPDF2.PdfFileReader(pdffileobj) total_pages = pdfreader.numPages full_text = "" # 循环遍历每一页,累加文本内容 for page_num in range(total_pages): pageobj = pdfreader.getPage(page_num) full_text += pageobj.extractText() + "\n\n" # 每页间加空行分隔,提升可读性 # 生成对应的TXT文件路径 newfpath = os.path.splitext(fpath)[0] + ".txt" # 将完整文本写入TXT文件 with open(newfpath, "w", encoding="utf-8") as file1: file1.write(full_text)
关键改动说明
- 新增全页面遍历逻辑:通过
for page_num in range(total_pages)循环,逐个提取每一页的文本内容 - 累加页面内容:用
full_text变量拼接所有页面的文本,避免只保留最后一页数据 - 优化路径生成:用
os.path.splitext替代正则替换,避免文件名中包含多个.pdf字符串时出现错误 - 规范文件操作:使用
with语句自动管理文件开闭,同时改用w模式写入,确保每次运行生成全新的TXT文件,不会重复追加内容
内容的提问来源于stack exchange,提问作者stripes 123
相关产品推荐
相关产品推荐

