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文件是否完好无损
我一直在尝试通过 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文件是否完好无损