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

如何用Python(PyPDF)在PDF指定坐标位置添加印章

解决PyPDF2添加指定坐标印章的问题

你当前用merge_page是直接把印章整页合并到目标PDF上,所以没法控制位置。要指定坐标添加印章,得把印章PDF的页面转换成可自由放置的XObject,再绘制到目标页面的指定位置。

修改后的代码示例

import PyPDF2 as pypdf

# 移除无关的excel保存代码(如果不需要的话)
# workbook.save(excel_file)

# 读取印章PDF,获取印章页面
stamp_reader = pypdf.PdfReader("/home/littlejiver/loadprocesser/images/PPB - DIFRTACC.pdf")
stamp_page = stamp_reader.pages[0]

# 将印章页面转换为FormXObject(可被放置的对象)
stamp_xobject = stamp_page.as_form_xobject()

# 读取目标PDF
target_reader = pypdf.PdfReader("/home/littlejiver/loadprocesser/Bills/Bison/INV-5163148A.PDF")
target_page = target_reader.pages[0]

# PDF坐标原点是页面左下角,x向右递增,y向上递增
# 这里指定印章放置的坐标(比如x=100, y=100),以及缩放比例(可选,比如0.5缩小一半)
# add_xobject参数:xobj, x, y, width, height
# 如果不想缩放,可以用印章原尺寸:stamp_page.mediabox.width, stamp_page.mediabox.height
target_page.add_xobject(
    stamp_xobject,
    x=100,  # 左下角x坐标
    y=100,  # 左下角y坐标
    width=stamp_page.mediabox.width * 0.8,  # 缩放后的宽度
    height=stamp_page.mediabox.height * 0.8  # 缩放后的高度
)

# 保存修改后的PDF
writer = pypdf.PdfWriter()
writer.add_page(target_page)
with open("/home/littlejiver/loadprocesser/Bills/Bison/INV-5163148A.PDF", "wb") as fp:
    writer.write(fp)

关键说明

  • 坐标系统:PDF的坐标原点在页面左下角,x轴向右,y轴向上,单位是点(1点=1/72英寸)。你可以根据需求调整x和y的值来定位印章。
  • 缩放控制:通过调整width和height的缩放比例(比如*0.8就是缩小到原尺寸的80%),可以适配目标页面的大小。
  • XObject转换:as_form_xobject()把印章页面转换成可重复放置的对象,这是实现精准定位的核心步骤。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 15:35:43