You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

需求:使用Python在PDF所有页脚添加本地图片且不影响原内容

所需依赖

先安装处理PDF的高效库PyMuPDF:

pip install pymupdf

完整脚本

import fitz  # PyMuPDF

def add_footer_logo(input_pdf_path, output_pdf_path, logo_path, bottom_margin=20, scale=0.2):
    # 打开原始PDF
    pdf_doc = fitz.open(input_pdf_path)
    # 获取Logo原始尺寸
    logo_rect = fitz.Rect(0, 0, 0, 0)
    try:
        logo_rect = fitz.open(logo_path).rect
    except Exception as e:
        print(f"加载Logo失败: {e}")
        return
    
    # 计算缩放后的Logo尺寸
    scaled_width = logo_rect.width * scale
    scaled_height = logo_rect.height * scale

    # 遍历每一页插入Logo
    for page in pdf_doc:
        page_rect = page.rect
        # 计算位置:水平居中,距离底部指定像素
        x = (page_rect.width - scaled_width) / 2
        y = bottom_margin  # PyMuPDF以页面左下角为原点,y值对应距离底部的高度
        # 插入图片到底层,避免遮挡原有内容
        page.insert_image(
            fitz.Rect(x, y, x + scaled_width, y + scaled_height),
            filename=logo_path,
            overlay=False
        )
    
    # 保存处理后的PDF
    pdf_doc.save(output_pdf_path)
    pdf_doc.close()
    print(f"处理完成,输出文件:{output_pdf_path}")

# 示例用法
if __name__ == "__main__":
    INPUT_PDF = "input.pdf"       # 本地PDF文件路径
    OUTPUT_PDF = "output.pdf"     # 输出PDF路径
    LOGO_PATH = "logo.png"        # 本地Logo图片路径
    add_footer_logo(INPUT_PDF, OUTPUT_PDF, LOGO_PATH, bottom_margin=25, scale=0.15)

关键说明

  • overlay=False:强制Logo位于页面底层,完全不会遮挡原有内容
  • bottom_margin:调整Logo距离页面底部的像素距离,按需修改即可
  • scale:控制Logo的缩放比例,避免尺寸过大或过小
  • 坐标系规则:PyMuPDF以页面左下角为原点,x轴向右递增,y轴向上递增

注意事项

  • 确保目标PDF未加密,加密文件需先解密才能处理
  • 支持PNG、JPG、BMP等常见图片格式
  • 若位置不符合预期,可微调bottom_margin和scale参数

内容的提问来源于stack exchange,提问作者d_k

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.10 08:33:25