我有一个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,第四页起应为单独的,直到同一正则表达式再次出现,依此类推。我该怎么办?
答案 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。