我们要求查找PDF文件中是否有空白/空白页面。 实际上有400万个PDF文件需要在上述条件下进行验证,并且PDF中还有10k-12k页面。因此需要一个脚本来自动完成这项工作。
答案 0 :(得分:0)
您可以检查每个页面的大小。这是迄今为止我发现的最简单的解决方案:
from reportlab.pdfgen.canvas import Canvas
import os
from PyPDF2 import PdfFileWriter, PdfFileReader, PdfFileMerger
output = PdfFileWriter()
tempoutput = PdfFileWriter()
input1 = PdfFileReader(open("document4.pdf", "rb"))
print ("document4.pdf has %d pages." % input1.getNumPages())
numPages1=input1.getNumPages()
def getSize(filename):
st = os.stat(filename)
return st.st_size
for i in range(numPages1):
canv1 = Canvas("paginatemporal.pdf")
canv1.showPage()
canv1.save()
archivotemp=open("paginatemporal.pdf", "rb")
temporal = PdfFileReader(archivotemp)
page=input1.getPage(i)
page.mergePage(temporal.getPage(0))
tempoutput.addPage(page)
outputStreamTemp = open("paginasize.pdf", "wb")
tempoutput.write(outputStreamTemp)
page=input1.getPage(i)
pdfsize1= getSize("paginasize.pdf")
if pdfsize1<60000:
print("Page number " + str(i+1) +" is blank.")
elif pdfsize1>=60000:
print("Page number "+ str(i+1) + " is not blank.")
print(pdfsize1)
archivotemp.close()
outputStreamTemp.close()
os.remove("paginatemporal.pdf")
os.remove("paginasize.pdf")
tempoutput = PdfFileWriter()
我只是尝试了一些事情,所以还没有完成,我需要找到每个页面,因为我必须在空白页面上添加标签:“No text”,并在每个主题的每个页面上放置连续的页码(可以有多个文件)。这就是我使用canvas和页面合并的原因。
我使用了太多临时文件,但很快就会清理代码。
希望这会对你有所帮助。它是在Python 3中。数字60,000是我放的大小,因为我的文件上的所有空白页都少于50,000,所有有信息的页面都超过100,000,但如果你的文件不同,它可能会改变。尝试使用其中一些并根据需要调整数量。
答案 1 :(得分:0)
ImageMagick附带一个比较程序,可以比较图像或PDF页面(如果安装了Ghostscript供它使用)。
您可以创建一个空白的PDF页面,并使用比较将其与每个文件的每个PDF页面进行比较。
您可以使用脚本语言的绑定(例如imagemagick或python的魔杖绑定),然后您需要知道的是每个PDF的页数。如果您正在使用Python,PyPDF2或pdfrw(免责声明:我是作者)可以为您提供此信息。
我从未与空白页进行比较,因此我会注意到每个文档的每个页面可能需要正确大小的空白页。您可以缓存这些以进行比较。 PyPDF2或pdfrw也可以计算出这些页面大小。