使用 python 将一个 pdf 拆分为多个不同页面长度的 pdf
split a pdf into multiple pdfs of different page length using python
我有一个 pdf 有 350 页,其中有多个电 bills.But 每个帐单的长度都不一样......有些只有 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,以便它仅在再次找到正则表达式 'Bill of Supply for Electricity' 时才拆分 pdf。
例如,如果第一页有这个正则表达式,然后第 3 页再次有这个正则表达式,那么第 1 页和第 2 页应该制作 1 个 pdf,然后第 3 页应该制作另一个 .如果第 4 页再次有此正则表达式,则第 3 页应该是一个单独的 pdf,第 4 页以后应该是单独的,直到再次出现相同的正则表达式,依此类推。我该怎么做?
好的,我已经更改了您的一些变量名称并删除了打印语句。让我们从构建一个函数开始,它会告诉您分页符需要在哪里。
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
接下来我们将从 page_breaks
列表的开头弹出元素,并在我们浏览 PDF 文件时使用它们。
from PyPDF2 import PdfFileWriter, PdfFileReader
inputpdf = PdfFileReader(open("80....pdf", "rb"))
num_pages = inputpdf.numPages
page_breaks = getPagebreakList('yourPDF.pdf')
i = 0
while (i < num_pages):
if page_breaks:
page_break = page_breaks.pop(0)
else:
page_break = num_pages
output = PdfFileWriter()
while (i != page_break + 1):
output.addPage(inputpdf.getPage(i))
i = i + 1
with open("80...-page%s.pdf" % i, "wb") as outputStream:
output.write(outputStream)
希望这能奏效。我显然没有办法进行测试,因为我手边没有带有正则表达式的长 PDF。
尝试相同但出现错误:
语法错误:'return' 函数外
[在 63 毫秒内完成]
python 中还有一个 nube 是一个 .py 文件吗
我有一个 pdf 有 350 页,其中有多个电 bills.But 每个帐单的长度都不一样......有些只有 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,以便它仅在再次找到正则表达式 'Bill of Supply for Electricity' 时才拆分 pdf。 例如,如果第一页有这个正则表达式,然后第 3 页再次有这个正则表达式,那么第 1 页和第 2 页应该制作 1 个 pdf,然后第 3 页应该制作另一个 .如果第 4 页再次有此正则表达式,则第 3 页应该是一个单独的 pdf,第 4 页以后应该是单独的,直到再次出现相同的正则表达式,依此类推。我该怎么做?
好的,我已经更改了您的一些变量名称并删除了打印语句。让我们从构建一个函数开始,它会告诉您分页符需要在哪里。
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
接下来我们将从 page_breaks
列表的开头弹出元素,并在我们浏览 PDF 文件时使用它们。
from PyPDF2 import PdfFileWriter, PdfFileReader
inputpdf = PdfFileReader(open("80....pdf", "rb"))
num_pages = inputpdf.numPages
page_breaks = getPagebreakList('yourPDF.pdf')
i = 0
while (i < num_pages):
if page_breaks:
page_break = page_breaks.pop(0)
else:
page_break = num_pages
output = PdfFileWriter()
while (i != page_break + 1):
output.addPage(inputpdf.getPage(i))
i = i + 1
with open("80...-page%s.pdf" % i, "wb") as outputStream:
output.write(outputStream)
希望这能奏效。我显然没有办法进行测试,因为我手边没有带有正则表达式的长 PDF。
尝试相同但出现错误:
语法错误:'return' 函数外 [在 63 毫秒内完成]
python 中还有一个 nube 是一个 .py 文件吗