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