【问题标题】:PyPDF2 corrupts file when watermarkingPyPDF2在加水印时损坏文件
【发布时间】:2021-01-08 08:43:43
【问题描述】:

我一直在尝试通过 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)

【问题讨论】:

    标签: python pdf pypdf2


    【解决方案1】:

    如果要将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 文件是否损坏。

    【讨论】:

    • 感谢您回到我身边,非常感谢 - 我正在使用您建议的更改,但这并没有解决它。我把 PdfFileReader(strict=False) 和它都整理出来了!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-14
    • 1970-01-01
    • 2018-11-24
    • 1970-01-01
    • 2017-12-03
    相关资源
    最近更新 更多