簡體   English   中英

在PyPDF PdfFileReader中遍歷頁面范圍會產生奇怪的循環

[英]Looping through a page range in PyPDF PdfFileReader gives strange loops

我有一個PDF ,它由4頁組成,我想將其分成單獨的文檔,然后根據其頁碼重命名。 問題是我有一個循環來循環訪問基於以下內容的每個頁面:for range(0,pdfReader.numpages)中的頁面,但是每次結束時它都會繼續並創建重復項。 我進行了打印(頁面)以查看發生了什么並得到:

0 1 2 3 0 0 0 0

將范圍切換到range(1,pdfReader.numpages)會導致循環1,2,3,並跳過第一頁。 進行循環(0,pdfReader.numpages + 1)可以正確輸出文件,但會出現錯誤IndexError:列表索引超出范圍

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等,除非它在range(1,pdfReader.numPages)起作用正確,但跳過首頁! 這讓我發瘋了,請幫忙。

我終於弄清楚了(對不起,我只是一個業余編碼員,所以一開始並不明顯!)該程序循環遍歷目錄中的每個PDF(其中包含提取和重命名的單頁文檔)。 如果將范圍更改為range(1,pdfReader.numPages),它將忽略所有這些新創建的文檔,因為它們全都是1頁長! 當將其設置為0時,它包括所有這些新創建的副本並重復它們。

我要做的就是將提取和重命名的文件夾移動到另一個目錄。 既然我做到了,那就真的很明顯了! 我還刪除了pdfFileObj = open(fullpath,“ rb”),因為閱讀器顯然是自動完成的,並且現在一切正常!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM