如何使使用PYPDF 2的多页水印更具资源效率

2024-10-03 06:26:32 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试编写一个简短的脚本,对一个100页的pdf(~100MB)进行编号,这是一个输入文件。我已经制作了约60KB的水印文件,我正在尝试生成一个输出,将这两个文件逐页合并,以生成编号的输出文件。水印文件由reportlab生成,它只是一个100页的空白文档,底部有正确的页码(1、2、3、4、5等)

虽然这个脚本可以运行,但它使用了一个普通的四核处理器运行了13分钟,平均CPU使用率约为30%,RAM使用率为5.5GB。这比我预期的要多,因为水印文件的生成几乎是瞬时的

输出文件也是~285MB,这比输入文件和水印文件的总和还要多

代码如下:

def mergepdffiles(inputfile,outputfile,watermarkfile):
    template = PyPDF2.PdfFileReader(open(inputfile, 'rb'))
    watermark = PyPDF2.PdfFileReader(open(watermarkfile, 'rb'))
    output = PyPDF2.PdfFileWriter()
    for i in range(template.getNumPages()):
        page = template.getPage(i)
        page.mergePage(watermark.getPage(i))
        output.addPage(page)

    with open(outputfile, 'wb') as file:
        output.write(file)
    return None

我怀疑在处理速度和内存使用方面有一种更有效的方法

或者,有没有更好的方法可以在多页pdf中向每个页面添加页脚,而不必合并两个现有文件?我认为这样会更有效率


Tags: 文件脚本outputpdfpagetemplateopen编号