python

关注公众号 jb51net

关闭
首页 > 脚本专栏 > python > Python PDF添加水印

Python给PDF添加水印的代码步骤

作者:蜡笔小新星

在本教程中,我们将学习如何使用 Python 编程语言以及 PyPDF2 和 reportlab 库来向 PDF 文档中添加水印,水印通常用于标记文档的版权信息、保密级别或其他重要通知,需要的朋友可以参考下

步骤 1:安装必要的库

首先,确保你已经安装了 PyPDF2 和 reportlab 库。如果尚未安装,可以使用以下命令通过 pip 安装它们:

pip install PyPDF2 reportlab

步骤 2:准备字体文件

由于我们要在水印中使用中文,因此需要准备一个支持中文的字体文件,例如 SimHei.ttf(黑体)。确保这个字体文件与你的 Python 脚本位于同一目录下,或者你知道它的完整路径。

步骤 3:编写 Python 脚本

接下来,我们编写一个 Python 脚本来生成水印并将其添加到现有的 PDF 文档中。

import io
from PyPDF2 import PdfWriter, PdfReader
from reportlab.lib import pagesizes
from reportlab.lib.units import cm
from reportlab.pdfbase import pdfmetrics
from reportlab.pdfbase.ttfonts import TTFont
from reportlab.pdfgen import canvas

# 注册字体,以便在 PDF 中使用中文
pdfmetrics.registerFont(TTFont('SimHei', 'SimHei.ttf'))

# 生成水印文件的函数
def create_water_mark(text):
    packet = io.BytesIO()
    # 创建一个新的 PDF 页面作为水印
    my_canvas = canvas.Canvas(packet, pagesizes.A4)
    # 设置水印字体和大小
    my_canvas.setFont("SimHei", 20)
    # 设置填充色为黑色
    my_canvas.setFillColorRGB(0, 0, 0)
    # 设置透明度(0.0 完全透明,1.0 完全不透明)
    my_canvas.setFillAlpha(0.1)
    # 旋转字体以增加水印效果
    my_canvas.rotate(30)
    # 在页面上多次绘制水印文本,以形成水印图案
    for i in range(3, 24, 10):
        for j in range(-5, 30, 5):
            my_canvas.drawString(i * cm, j * cm, text)
    my_canvas.save()
    packet.seek(0)
    # 返回水印页面的 PdfReader 对象
    return PdfReader(packet)

# 将水印添加到 PDF 文件的函数
def add_watermark(input_pdf_path, output_pdf_path, watermark_text):
    # 创建水印
    watermark = create_water_mark(watermark_text)
    # 读取输入 PDF 文件
    pdf_reader = PdfReader(input_pdf_path)
    pdf_writer = PdfWriter()
    # 遍历输入 PDF 的每一页,并添加水印
    for page in pdf_reader.pages:
        page.merge_page(watermark.pages[0])
        pdf_writer.add_page(page)
    # 将带有水印的 PDF 写入输出文件
    with open(output_pdf_path, "wb") as output_pdf:
        pdf_writer.write(output_pdf)

# 主程序
if __name__ == '__main__':
    # 输入和输出 PDF 文件的路径
    input_pdf = r"input.pdf"  # 替换为你的输入 PDF 路径
    output_pdf = r"output_with_watermark.pdf"  # 期望的输出 PDF 路径
    watermark_text = "添加水印测试文本"  # 水印文本内容
    # 调用函数添加水印
    add_watermark(input_pdf, output_pdf, watermark_text)

步骤 4:运行脚本

将上述脚本保存为一个 .py 文件,并确保 SimHei.ttf 字体文件与脚本位于同一目录下。然后,在命令行中运行该脚本:

python your_script_name.py

将 your_script_name.py 替换为你保存脚本的文件名。

步骤 5:检查结果

脚本运行完成后,检查指定的输出目录,你应该会看到一个名为 output_with_watermark.pdf 的新文件。打开它,你将看到每一页都添加了指定的水印文本。

注意事项

到此这篇关于Python给PDF添加水印的代码步骤的文章就介绍到这了,更多相关Python PDF添加水印内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:
阅读全文