从pdf文件中查找空白页面?

时间:2015-07-27 06:41:35

标签: pdf

我们要求查找PDF文件中是否有空白/空白页面。 实际上有400万个PDF文件需要在上述条件下进行验证,并且PDF中还有10k-12k页面。因此需要一个脚本来自动完成这项工作。

2 个答案:

答案 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也可以计算出这些页面大小。