PyPDF2 在加水印时损坏文件

PyPDF2 corrupts file when watermarking

我一直在尝试通过 PyPDF2 在 PDF 中添加戳记作为水印来加快我们的日期戳过程。我在网上找到了下面的代码,因为我对编码还很陌生。

当我 运行 这似乎有效时,但文件已损坏且无法打开。有人知道我哪里出错了吗?

from PyPDF2 import PdfFileWriter, PdfFileReader

 

def create_watermark(input_pdf, output_pdf, watermark):

    watermark_obj = PdfFileReader(watermark,False,)

    watermark_page = watermark_obj.getPage(0)

 

    pdf_reader = PdfFileReader(input_pdf)

    pdf_writer = PdfFileWriter()

 

    # Watermark all the pages

    for page in range(pdf_reader.getNumPages()):

        page = pdf_reader.getPage(page)

        page.mergePage(watermark_page)

        pdf_writer.addPage(page)

 

    with open(input_pdf, 'wb') as out:

        pdf_writer.write(out)

 

if __name__ == '__main__':

   

    input_pdf = "C:\Users\A***\OneDrive - ***\Desktop\Invoice hold\Test\1.pdf"

    output_pdf = "C:\Users\A***\OneDrive - ***\Desktop\Invoice hold\Test\1 WM.pdf"

    watermark = "C:\Users\A***\OneDrive - ***\Desktop\Invoice hold\WM.pdf"

 

    create_watermark(input_pdf,output_pdf,watermark)

如果您想将pdf文件保存在output_pdf下,

试试这个:

result = open(output_pdf, 'wb')
pdf_writer.write(result)

您的代码:

with open(input_pdf, 'wb') as out:
    pdf_writer.write(out)

您的代码将覆盖 input_pdf。

并且如果在工作中出现问题,pdf文件将会损坏。

通过应用您的代码和我提出的方法,我成功地插入了水印。

建议检查pdf文件是否完好无损