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"
)

效果如下:

相关推荐
夏日白云1 天前
《PDF解析工程实录》第 8 章|融合策略:不是兜底,而是信息利用率最大化
pdf·llm·大语言模型·rag·文档解析
m5655bj1 天前
通过 Python 提取 PDF 表格数据
服务器·python·pdf
清平乐的技术专栏1 天前
电脑自带Edge浏览器进行PDF文件合并
前端·edge·pdf
Irene19911 天前
文档加密加水印只读分享:WPS/PPT编辑后导出PDF(附:百度网盘分享流程)
pdf·加密·wps·pptx·只读
2501_930707781 天前
使用C#代码重新排列 PDF 页面
开发语言·pdf·c#
南风微微吹1 天前
【2026年3月】计算机二级WPS真题试卷及解析14套~电子版PDF
pdf·wps·计算机二级wps
夏日白云1 天前
《PDF解析工程实录》第 9 章|端到端多模态模型:不是接不住,而是要看业务能接受什么
pdf·llm·大语言模型·多模态·rag·文档解析
机器学习算法与Python实战2 天前
PDF 文件翻译,我有4个方案推荐
pdf
manjianghong863 天前
如何将一本书PDF扫描件转word 并打印(免费工具)
pdf·word·pdf处理工具
zhangfeng11333 天前
大语言模型llm学习路线电子书 PDF、开源项目、数据集、视频课程、面试题、工具镜像汇总成一张「一键下载清单」
学习·语言模型·pdf