096、Python 给PDF文件加水印的方法

给PDF文件加水印,我们也可以使用之前用过的PyPDF2库,但是会稍显麻烦,因为PyPDF2主要用于PDF的合并、拆分、旋转等。所以需要先生成一个PDF的水印页面,然后再与原来页面进行合并,如此这般。

但我们可以使用另一个库:PyMuPDF

1、首先,安装PyMuPDF:

pip install pymupdf

2、使用库,编写代码,如下:

"""
example096 - Python 给PDF加水印的方法

Author: 不在同一频道上的呆子
Date: 2024/7/27
"""

import fitz  # PyMuPDF


def add_watermark(pdf_path, output_path, watermark_text, shrink_amount=72, horizontal_offset=50, vertical_offset=50):
    """
        编写加水印方法:add_watermark

        :原pdf路径:pdf_path
        :输出路径:output_path
        :水印文本:watermark_text
        :缩放:shrink_amount
        :水平便宜:horizontal_offset
        :垂直偏移:vertical_offset
        """
    doc = fitz.open(pdf_path)
    for page in doc:
        # 创建一个矩形水印,稍微缩小以避免遮挡文字
        original_rect = page.rect
        watermark_rect = fitz.Rect(
            original_rect.x0 + shrink_amount / 2,
            original_rect.y0 + shrink_amount / 2,
            original_rect.x1 - shrink_amount / 2,
            original_rect.y1 - shrink_amount / 2
        )

        # 设置文本插入的起始点
        text_pos = (watermark_rect.x0 + horizontal_offset, watermark_rect.y1 - vertical_offset)

        # 添加水印
        page.insert_text(
            text_pos,  # 文本插入的起始点
            watermark_text,  # 水印文本
            fontsize=36,  # 字体大小
            fontname="Helvetica",  # 字体名称
            color=(0, 0, 0),  # 字体颜色(黑色)
        )

    doc.save(output_path)
    doc.close()


# 调用
pdf_path1 = 'Resources/Windows8使用指南.pdf'
output_path1 = 'Resources/Windows8使用指南_加水印.pdf'
watermark_text1 = "DEMO"  # 支持英文
add_watermark(pdf_path1, output_path1, watermark_text1, horizontal_offset=230, vertical_offset=350)

运行以上代码,我成功为我的PDF加上了水印。

猜你喜欢

转载自blog.csdn.net/mr_five55/article/details/140734354