本文将详细介绍如何使用Python语言向PDF文档中添加图章,对于需要保护PDF文档的用户尤为方便。
一、安装相关依赖
在开始编写代码之前,我们需要先安装相关的库,这里我们需要使用到的库为:pypdf2
和reportlab
。
pip install pypdf2 pip install reportlab
二、生成图章
在将图章添加到PDF文档中之前,我们需要先生成一个图章。
from reportlab.lib.units import mm from reportlab.pdfgen import canvas from reportlab.lib.pagesizes import A4 def create_stamp(content): # 设置画布大小 c = canvas.Canvas("stamp.pdf", pagesize=(60*mm, 60*mm)) # 设置字体 c.setFontSize(16) c.setFont("Helvetica-Bold", 16) c.drawCentredString(30*mm, 35*mm, content) # 画边框和直线 c.roundRect(0, 0, 60*mm, 60*mm, 10, stroke=1, fill=0) c.line(0, 15*mm, 60*mm, 15*mm) c.save()
三、添加图章
有了生成图章的方法,我们就可以开始将图章添加到PDF文档中了。下面代码中将最终的新PDF文档保存在了new_file.pdf
中。
import os from PyPDF2 import PdfFileReader, PdfFileWriter from reportlab.lib.pagesizes import A4 def add_stamp(file_path, stamp_content): # 生成图章 create_stamp(stamp_content) # 读取PDF文件 pdf_reader = PdfFileReader(open(file_path, "rb")) pdf_writer = PdfFileWriter() # 获取PDF文件总页数 page_count = pdf_reader.getNumPages() # 读取图章 stamp = PdfFileReader(open("stamp.pdf", "rb")).getPage(0) # 循环遍历所有页面 for i in range(page_count): # 获取PDF文件单页 pdf_page = pdf_reader.getPage(i) pdf_page.mergePage(stamp) # 将合并后的页面添加到新PDF文件中 pdf_writer.addPage(pdf_page) # 将新PDF文件保存到工作目录 with open('new_file.pdf', 'wb') as fh: pdf_writer.write(fh) # 删除生成的图章文件 os.remove("stamp.pdf")
四、使用方法
最后,我们来测试一下
add_stamp("example.pdf", "个人文件")
运行完后,会在当前目录下生成一个名为new_file.pdf
的文件,包含了原PDF文件的所有内容,同时每页还会添加上一个印章。