在 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 文件添加骑缝章,适用于合同、报告等需要防伪的场景。
网友回复