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)