在 Python 中为 PDF 文件的多个页面添加骑缝章(即跨页印章),可以使用 PyMuPDF(也称为 fitz)库。以下是实现步骤和代码示例:
步骤安装依赖库:
使用 PyMuPDF 处理 PDF 文件。使用 Pillow 处理图像(骑缝章图片)。准备骑缝章图片:
骑缝章图片需要是透明背景的 PNG 格式。计算骑缝章位置:
骑缝章通常跨页显示,因此需要根据页面宽度和高度计算印章的位置。将骑缝章添加到 PDF 页面:
遍历 PDF 的每一页,将骑缝章图片添加到合适的位置。代码实现import fitz # PyMuPDF
from PIL import Image # Pillow
def add_stitch_seal(pdf_path, seal_path, output_path):
"""
为 PDF 文件的每一页添加骑缝章
:param pdf_path: 输入 PDF 文件路径
:param seal_path: 骑缝章图片路径(PNG 格式)
:param output_path: 输出 PDF 文件路径
"""
# 打开 PDF 文件
pdf_document = fitz.open(pdf_path)
# 加载骑缝章图片
seal_image = Image.open(seal_path)
seal_width, seal_height = seal_image.size
# 遍历每一页
for page_num in range(len(pdf_document)):
page = pdf_document.load_page(page_num)
page_rect = page.rect # 获取页面大小
# 计算骑缝章位置(跨页显示)
if page_num % 2 == 0: # 偶数页(左侧)
x_position = page_rect.width / 2 - seal_width / 2
else: # 奇数页(右侧)
x_position = page_rect.width / 2 + seal_width / 2
y_position = page_rect.height / 2 - seal_height / 2 # 垂直居中
# 将骑缝章图片添加到页面
page.insert_image(
fitz.Rect(x_position, y_position, x_position + seal_width, y_position + seal_height),
filename=seal_path,
)
# 保存修改后的 PDF
pdf_document.save(output_path)
pdf_document.close()
print(f"骑缝章已添加,保存为:{output_path}")
# 示例用法
if __name__ == "__main__":
pdf_path = "input.pdf" # 输入 PDF 文件路径
seal_path = "seal.png" # 骑缝章图片路径
output_path = "output_with_seal.pdf" # 输出 PDF 文件路径
add_stitch_seal(pdf_path, seal_path, output_path) 代码说明依赖库:
PyMuPDF:用于处理 PDF 文件,加载页面并插入图片。Pillow:用于加载骑缝章图片。骑缝章位置计算:
骑缝章通常跨页显示,偶数页在左侧,奇数页在右侧。通过 page.rect 获取页面大小,计算骑缝章的居中位置。插入图片:
使用 page.insert_image 方法将骑缝章图片添加到页面。保存 PDF:
使用 pdf_document.save 保存修改后的 PDF 文件。注意事项骑缝章图片:
骑缝章图片需要是透明背景的 PNG 格式,以确保与 PDF 页面融合自然。页面大小:
如果 PDF 页面大小不一致,需要根据每页的大小动态调整骑缝章位置。性能优化:
对于大型 PDF 文件,可以优化图片插入的逻辑,避免重复加载骑缝章图片。输出示例运行代码后,生成的 output_with_seal.pdf 文件将在每一页的骑缝位置添加骑缝章。
通过这种方式,你可以轻松地为 PDF 文件添加骑缝章,适用于合同、报告等需要防伪的场景。
网友回复


