使用python对pdf批量添加水印,并且水印字体,大小,位置,旋转角度都是可以调节

本文介绍了如何使用Python库如PyPDF2和reportlab实现PDF文件的批量水印添加功能,包括自定义水印内容、字体大小、位置和旋转角度。
摘要由CSDN通过智能技术生成

1.使用python对pdf批量添加水印,并且水印字体,大小,位置,旋转角度都是可以调节的

import os
from PyPDF2 import PdfReader, PdfWriter
from reportlab.pdfgen import canvas
from reportlab.lib.pagesizes import letter
from reportlab.lib.colors import Color


def create_watermark(content, font_size=20, rotate_angle=45, x=450, y=200, color=Color(0, 0, 0, alpha=0.5),
                     page_size=letter):
    """
    创建水印PDF文件,允许自定义颜色和位置。

    :param content: 水印文本内容
    :param font_size: 字体大小
    :param rotate_angle: 水印文本旋转角度
    :param x, y: 水印文本在页面上的位置坐标
    :param color: 水印文本的颜色,使用reportlab.lib.colors.Color定义
    :param page_size: 页面尺寸,用于确定水印的位置
    """
    watermark_file = f"watermark_{content.replace(' ', '_')}.pdf"
    c = canvas.Canvas(watermark_file, pagesize=page_size)
    c.setFont("Helvetica", font_size)
    c.setFillColor(color)
    c.rotate(rotate_angle)
    c.drawString(x, y, content)
    c.save()
    return watermark_file


def add_watermark(pdf_file, watermark_file, output_file):
    """
    将水印添加到PDF文件的每一页中。
    """
    output = PdfWriter()
    input_pdf = PdfReader(pdf_file)
    watermark_pdf = PdfReader(watermark_file)
    watermark_page = watermark_pdf.pages[0]

    for page in input_pdf.pages:
        page.merge_page(watermark_page)
        output.add_page(page)

    with open(output_file, 'wb') as output_pdf_file:
        output.write(output_pdf_file)

def batch_add_custom_watermarks(pdf_folder, watermarks_info):
    """
    批量为不同的PDF文件添加不同的水印。
    """
    for file, watermark_info in watermarks_info.items():
        pdf_file = os.path.join(pdf_folder, file)
        if os.path.exists(pdf_file) and file.lower().endswith('.pdf'):
            watermark_content = watermark_info.get('content', 'Confidential')
            font_size = watermark_info.get('font_size', 12)
            rotate_angle = watermark_info.get('rotate_angle', 0)
            watermark_file = create_watermark(watermark_content, font_size, rotate_angle)
            output_file = os.path.join(pdf_folder, f"watermarked_{file}")
            add_watermark(pdf_file, watermark_file, output_file)
            print(f"Watermarked {file}")
        else:
            print(f"File {file} not found or not a PDF.")

# 示例配置
pdf_folder = 'E:/pythonworking/file/pdf_merge'
watermarks_info = {
    #content:要添加的水印内容,font_size为字体大小,rotate_angle为旋转角度
    '1.pdf': {'content': 'Confidential', 'font_size': 42, 'rotate_angle': 45},
    '2.pdf': {'content': 'Draft', 'font_size': 42, 'rotate_angle': 45},
    # 添加更多文件和对应的水印设置
}

batch_add_custom_watermarks(pdf_folder, watermarks_info)

  • 10
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值