“小李,今天需要给一批商务文件文件加水印”,快下班了,小李被老板临时分配的任务惊呆了。咋办?200个PDF 啊!
Python不加班:5分钟学会自动给PDF加水印
什么是水印?
水印识别印刷和数字文档上的图像或图案。某些水印只能在特殊照明条件下才能看到。水印的重要性在于它可以保护您的知识产权,例如您的图像或PDF。水印的另一个术语是叠加。可以使用Python并PyPDF2为文档添加水印。您需要拥有仅包含水印图像或文本的PDF。
什么是水印?
Python大大出现了,对小李说,“不要担心!5分钟包你学会用Python添加水印”。程序如下:
from PyPDF2 import PdfFileWriter, PdfFileReader
def create_watermark(input_pdf, output, watermark):
watermark_obj = PdfFileReader(watermark)
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(output, 'wb') as out:
pdf_writer.write(out)
if __name__ == '__main__':
create_watermark(
input_pdf='Jupyter_Notebook_An_Introduction.pdf',
output='watermarked_notebook.pdf',
watermark='watermark.pdf')
幸好小李已经打卡学习Python了一段时间,有了点基础,大大大约解释了下程序,小李就懂了,乐呵呵的笑了。
“首先,这个程序已经做了一个封装,只要将对应参数传进去就可以调用给PDF 加水印了。
create_watermark() 接受三个参数:
- input_pdf:要加水印的PDF文件路径
- output:您要保存PDF的水印版本的路径
- watermark:包含水印图像或文本的PDF
在代码中,打开水印PDF并从文档中抓取第一页,因为这是水印的位置。然后使用input_pdf和通用pdf_writer对象创建PDF对象,用来生成带水印的PDF。
下一步是遍历页面中的页面input_pdf。这就是真真添加水印的部分。你需要打调用mergePage()并传递它watermark_page。将把水印PDF页面放在在当前页面的顶部。然后将新合并的页面添加到pdf_writer对象中。”
最后大大说,“不要忘记用
pip install PyPDF2
来安装好对应的python模块啊!”
Python大大讲完了这一切,然后深藏功与名,又要消失了,临走的时候,给小李说“由于有很多文件,建议你都放一个目录下,然后用Python来遍历目录下的文件,然后用循环来调用函数就可以了,这个就当你的作业呢!”说完,消失在茫茫夜色中。
Python来遍历目录下的文件,然后用循环来调用函数
小李用了几分钟完成了大大的作业。运行完毕后,满意的发现200个PDF文件都加上了水印,自动存储在了制定目录下,露出了不加班的微笑。