在PyPDF PdfFileReader中遍历页面范围会产生奇怪的循环

2024-04-26 09:24:51 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个PDF,它由4页组成,我想把它分成单独的文档,并根据它们的页码对它们进行重命名。问题是我有一个循环来遍历每一个页面,基于:对于范围内的页面(0,pdfReader.numpages页)但每次它应该结束的时候,它都会继续运行并产生重复。我打印了一张照片(第页),看看发生了什么,得到了:

0 1 2 3 0 0 0

将量程切换到量程(1,pdfReader.numpages页)生成循环1、2、3并跳过第一页。循环(0,pdfReader.numpages页+1) 给出正确的文件输出,但给出的错误索引器错误:列表索引超出范围

import os, PyPDF2, re, tika, time
from tika import parser

def split_pdf_pages(root_directory, extract_to_folder):
    for root, dirs, files in os.walk(root_directory):
        for filename in files:
            basename, extension = os.path.splitext(filename)

            if extension == ".pdf":
                fullpath = root + "\\" + basename + extension
                pdfFileObj = open(fullpath, "rb")
                pdfReader = PyPDF2.PdfFileReader(pdfFileObj)

                for page in range(0, pdfReader.numPages):
                    print(page)
                    pdfWriter = PyPDF2.PdfFileWriter()
                    pageObj = pdfReader.getPage(page)

                    outputpdf = extract_to_folder + "\\" + basename + "-{}.pdf".format(page+1)
                    pdfWriter.addPage(pageObj)

                    with open(outputpdf, "wb") as f:

                        pdfWriter.write(f)

                pdfFileObj.close()

我希望得到名为filename-1、filename-2.pdf等的文件,但是得到的却是filename-1、filename-1-1、filename-2、filename2-2等,除非它的范围是(1,pdfReader.numPages页)在那里它工作正常,但跳过第一页!我疯了,请帮我开车。在


Tags: inforpdfosextensionpageroot页面
1条回答
网友
1楼 · 发布于 2024-04-26 09:24:51

我终于弄明白了(抱歉,我只是个程序员,所以一开始还不明显!)该程序循环遍历目录中的每一个PDF(其中包含提取和重命名的单页文档)。如果将范围更改为范围(1,pdfReader.numPages页)它忽略了所有这些新创建的文档,因为它们都只有1页长!当它设置为0时,它包括所有这些新创建的并复制它们。在

我所要做的就是将提取并重命名的文件夹移到另一个目录中。感觉很明显,现在我已经做到了!我还删除了pdfFileObj=open(fullpath,“rb”),因为reader显然是自动完成的,现在一切正常!在

相关问题 更多 >