Python-PDF文件生成水印

给下面PDF文件打印【仅用XXX】水印

身份证正反面.pdf

复制代码
from PyPDF2 import PdfReader, PdfWriter
from reportlab.pdfgen import canvas
from reportlab.lib.pagesizes import letter
from reportlab.pdfbase import pdfmetrics
from reportlab.pdfbase.ttfonts import TTFont
import io

def add_text_watermark(input_pdf, output_pdf, watermark_text):
    # 1. 注册中文字体(关键步骤)
    # 替换为你的字体文件路径(如宋体、微软雅黑)
    font_path = "simsun.ttc"  # 若放在项目根目录,直接写文件名;否则写绝对路径
    pdfmetrics.registerFont(TTFont('Chinese', font_path))

    # 2. 生成水印PDF(内存中)
    watermark_buffer = io.BytesIO()
    c = canvas.Canvas(watermark_buffer, pagesize=letter)
    c.setFillAlpha(0.3)  # 透明度
    # 使用注册的中文字体(名称为'Chinese',大小40)
    c.setFont("Chinese", 12)
    c.rotate(45)  # 旋转角度

    # 重复添加水印(覆盖页面)
    for x in range(0, 600, 150):
        for y in range(-200, 800, 200):
            c.drawString(x, y, watermark_text)  # 中文正常显示
    c.save()

    # 3. 合并原PDF与水印
    watermark_buffer.seek(0)
    watermark_pdf = PdfReader(watermark_buffer)
    watermark_page = watermark_pdf.pages[0]

    reader = PdfReader(input_pdf)
    writer = PdfWriter()
    for page in reader.pages:
        page.merge_page(watermark_page)
        writer.add_page(page)

    # 4. 输出结果
    with open(output_pdf, "wb") as f:
        writer.write(f)

# 使用示例
add_text_watermark(
    input_pdf="cat.pdf",
    output_pdf="带水印的文件.pdf",
    watermark_text="仅用XXX"
)

效果如下:

相关推荐
星花月10 小时前
【无标题】
ai·语言模型·pdf·deep learning
XLYcmy1 天前
pdf论文处理:CSV输出模式
数据库·python·pycharm·pdf·论文·csv·dify
SamChan903 天前
用Python+Requests批量翻译PDF:从脚本到调度
后端·python·microsoft·ai·pdf·机器翻译
SamChan903 天前
PDF翻译API的JWT签名鉴权与速率限制设计:安全实战指南
网络·安全·pdf
Web打印3 天前
gridreport导出后的pdf只支持①到⑨,然而⑩之后的不支持_gwj_20260811_122323.docx
pdf
AmyLin_20013 天前
PDF 脱敏技术【1】:PDF 脱敏不是盖黑框:为什么敏感信息仍能被复制,正确的保护方式是什么?
安全·pdf·sdk·脱敏·文档安全·pdf 脱敏·智能脱敏
denggun123453 天前
PDF解析 Mineru
pdf
10mAh3 天前
【PaddleOCR】扫描版 PDF 无法复制、RAG 检索为空怎么解决?——OCR 解析与版面还原实战
前端·pdf·ocr
慧都小妮子4 天前
PDF图片提取总“褪色“?Aspose.PDF 多层级提取能力详解
pdf·c#·.net·图片处理·文档处理·色彩空间
SamChan904 天前
PDF翻译中的并发控制:用Semaphore防止API限流与资源耗尽
java·jvm·pdf