使用python将pdf分为不同页面长度的多个pdf

时间:2020-06-12 12:30:01

标签: python pypdf2

我有一个pdf文件,包含350页,其中有多个电费账单,但是每个电费账单的长度都不相同...有些账单只有1页,有些账单只有2或3页。我需要相应地拆分此pdf。

我有以下代码将pdf分为单个页面:

from PyPDF2 import PdfFileWriter, PdfFileReader

inputpdf = PdfFileReader(open("80....pdf", "rb"))

for i in range(inputpdf.numPages):
    output = PdfFileWriter()
    output.addPage(inputpdf.getPage(i))
    with open("80...-page%s.pdf" % i, "wb") as outputStream:
        output.write(outputStream)

我通过Pypdf2搜索字符串在pdf中标识了一个正则表达式 以下是我的代码:

import PyPDF2
import re

object = PyPDF2.PdfFileReader("PDF.pdf")

NumPages = object.getNumPages()

for i in range(0, NumPages):
    PageObj = object.getPage(i)

    Text = PageObj.extractText() 
    #print(Text)
    if re.search(r"Bill of Supply for Electricity", Text):
        print("this is page " + str(i) + '\n First Page') 
        Regex = re.search(r"Bill of Supply for Electricity", Text).group()
        print(Regex)
    else:
        print("this is page " + str(i) + '\n Not First Page')

我发现了该特定字符串从其开始的页面。现在,我想相应地拆分pdf,以便仅当它再次找到正则表达式“电力供应清单”时才拆分pdf。 例如,如果第一页具有此正则表达式,然后第三页再次具有此正则表达式,则第1和2页应为1 pdf,然后第3页应为另一个pdf。如果第四页再次具有此正则表达式,则第三页应为单独的pdf,第四页起应为单独的,直到同一正则表达式再次出现,依此类推。我该怎么办?

1 个答案:

答案 0 :(得分:1)

好的,我已经更改了一些变量名,并删除了打印语句。让我们从构建一个函数开始,该函数将告诉您分页符的位置。

JSON_VALUE(cast(Payload as nvarchar(max)), '$.email') LIKE '%test@test.com%'

接下来,我们将从def getPagebreakList(file_name: str)->list: pdf_file = PyPDF2.PdfFileReader(file_name) num_pages = pdf_file.getNumPages() page_breaks = list() for i in range(0, num_pages): Page = file.getPage(i) Text = PageObj.extractText() if re.search(r"Bill of Supply for Electricity", Text): page_breaks.append(i) return page_breaks 列表的开头弹出元素,并在遍历PDF文件时使用它们。

page_breaks

希望这行得通。我显然无法进行测试,因为在某些页面上没有巧用正则表达式的长PDF。