在Python中使用 PyPDF4 将水印添加到 PDF
我们非常熟悉最常用的数据格式 PDF(便携式文档格式),扩展名为 .pdf。虽然 PDF 最初由 Adobe 发明,虽然现在由 ISO 维护,但用于在各种操作系统之间呈现和交换文档。
安装
它可以使用pip或conda安装,具体取决于您使用的是Python还是 Anaconda。
但是,这是使用特定版本的 pip 安装的方式:
pip install PyPDF4==1.27.0
否则一般来说:
pip install PyPDF4
注意:与Python版本 2.6、2.7 和 3.2 – 3.5 兼容。
添加水印
让我们为 PDF 文件添加水印(本文的主要目的)。您必须知道水印是在我们的合法文件中声明我们的权利和知识产权的方式,因此它非常重要。
下面是实现。
原始PDF:
水印PDF:
Python3
# compatible with Python versions 2.6, 2.7,
# and 3.2 - 3.5. (pip3 install pypdf4)
from PyPDF4 import PdfFileWriter, PdfFileReader
import PyPDF4
PyPDF4.PdfFileReader('GFG.pdf')
def put_watermark(input_pdf, output_pdf, watermark):
# reads the watermark pdf file through
# PdfFileReader
watermark_instance = PdfFileReader(watermark)
# fetches the respective page of
# watermark(1st page)
watermark_page = watermark_instance.getPage(0)
# reads the input pdf file
pdf_reader = PdfFileReader(input_pdf)
# It creates a pdf writer object for the
# output file
pdf_writer = PdfFileWriter()
# iterates through the original pdf to
# merge watermarks
for page in range(pdf_reader.getNumPages()):
page = pdf_reader.getPage(page)
# will overlay the watermark_page on top
# of the current page.
page.mergePage(watermark_page)
# add that newly merged page to the
# pdf_writer object.
pdf_writer.addPage(page)
with open(output_pdf, 'wb') as out:
# writes to the respective output_pdf provided
pdf_writer.write(out)
if __name__ == "__main__":
put_watermark(
input_pdf='GFG.pdf', # the original pdf
output_pdf='watermark_added1.pdf', # the modified pdf with watermark
watermark='geeks.pdf' # the watermark to be provided
)
输出:
解释:
- 阅读最初给定的输入 pdf 的页面(使用PdfFileReader() 类)
- 读取水印的第一页(使用 PdfFileReader() 类)
- 使用PdfFileWriter() 类创建一个pdf writer 对象
- 接下来,就是遍历input_pdf中的页面。
- 调用.mergePage()并将watermark_page 传递给它。
- 使用addPage()方法将此合并页面添加到 pdf writer 对象。
- 使用write() 方法将其写入输出页面。