【python实用小脚本-194】Python一键给PDF加水印:输入文字秒出防伪文件——再也不用开Photoshop
Python一键给PDF加水印:输入文字秒出防伪文件——再也不用开Photoshop
PDF加水印, 本地脚本, 零会员费, 防伪标记, 瑞士军刀
故事开场:一把瑞士军刀救了投标的你
周五下午,你把 100 页标书 PDF 发给客户,却担心被同行盗用。
想加水印,打开 Photoshop 导出再合并?图层爆炸,电脑风扇狂转。
这时,你从桌面掏出“小白瑞士军刀”——main.py
。
终端里输入:
PDF file: bid.pdf
Enter the watermark text here: CONFIDENTIAL - 2024
30 秒后,finalDraft.pdf
生成,每页都斜着灰字“CONFIDENTIAL - 2024”,盗用者无从下手。
痛点解决:再也不用庞大设计软件,一句命令给 PDF 打防伪标签。
完整代码(≤1000字符,直接展示)
from reportlab.pdfgen import canvas
from reportlab.lib.units import inch
from reportlab.lib import colors
from reportlab.lib.pagesizes import A4
from PyPDF2 import PdfFileReader, PdfFileWriterdef make_watermark(text):c = canvas.Canvas("watermark.pdf", pagesize=A4)c.translate(inch, inch)c.setFillColor(colors.grey, alpha=0.6)c.setFont("Helvetica", 50)c.rotate(45)c.drawCentredString(400, 100, text)c.save()def add_watermark(pdf_file):watermark = 'watermark.pdf'merged = "finalDraft.pdf"with open(pdf_file, "rb") as inp, open(watermark, "rb") as wm:reader = PdfFileReader(inp)writer = PdfFileWriter()wm_page = PdfFileReader(wm).getPage(0)for i in range(reader.numPages):page = reader.getPage(i)page.mergePage(wm_page)writer.addPage(page)with open(merged, "wb") as out:writer.write(out)if __name__ == "__main__":text = input("水印文字: ")pdf_file = input("PDF 路径: ")make_watermark(text)add_watermark(pdf_file)
代码解析
功能块 1:快速画水印
reportlab
三行生成带旋转角度的透明水印 PDF,字体大小颜色可调。
c.setFillColor(colors.grey, alpha=0.6)
c.rotate(45)
c.drawCentredString(400, 100, text)
功能块 2:逐页合并
PyPDF2
把水印页当作图层,循环合并到每一页,顺序不变。
page.mergePage(wm_page)
功能块 3:零残留输出
合并完直接生成 finalDraft.pdf
,无临时文件,干净清爽。
writer.write(out)
如果还想更厉害
扩展点子 1:批量文件夹
把 reports/
里所有 PDF 一键加统一水印。
import glob
for pdf in glob.glob("reports/*.pdf"):add_watermark(pdf)
扩展点子 2:GUI拖放+预览
用 tkinter
做窗口,拖文件+实时预览水印位置。
import tkinter.filedialog as fd
pdf_file = fd.askopenfilename()
总结
main.py
这把 30 行瑞士军刀,把“打开PS→画水印→导出→合并”四步压缩成“输入文字+回车”。
你无需会员、无需联网,就能把任意 PDF 打上专属防伪水印。
再加两行批量或 GUI,它就从脚本升级成版权工厂。
下次再怕文件被转发,直接跑脚本,30 秒给 PDF 上锁!
源码获取
完整代码已开源,包含详细的注释文档:
🔗 [GitCode仓库] https://gitcode.com/laonong-1024/python-automation-scripts
📥 [备用下载] https://pan.quark.cn/s/654cf649e5a6 提取码:f5VG