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

如何使用borb提取PDF中图片及其坐标并粘贴至指定位置

一、提取PDF图片及坐标尺寸

borb的ImageExtraction工具不仅能提取图片对象,还会自动记录每张图片的边界框信息——也就是你需要的坐标和尺寸。别只盯着get_images(),搭配get_image_locations()就能拿到完整数据:

from borb.pdf import PDF, Document
from borb.toolkit import ImageExtraction
import typing

# 初始化图片提取器
image_extractor = ImageExtraction()

# 加载PDF文档
doc = None
with open("test_image.pdf", "rb") as in_file:
    doc = PDF.loads(in_file, [image_extractor])

assert doc is not None

# 获取每页的图片和对应位置数据
page_images = image_extractor.get_images()
page_locations = image_extractor.get_image_locations()

# 遍历每页处理图片信息
for page_num in page_images:
    imgs = page_images[page_num]
    locs = page_locations[page_num]
    for img, box in zip(imgs, locs):
        print(f"页码:{page_num}")
        print(f"图片:{img}")
        print(f"左上角坐标:({box.x}, {box.y})")
        print(f"宽高:{box.width} × {box.height}")

这里的box是BoundingBox对象,直接取x/y(以页面左下角为原点的左上角坐标)、width/height就能拿到你需要的精确参数。

二、指定坐标插入图片

不需要用SingleColumnLayout这类流式布局,要绝对定位直接绕开布局限制,用以下两种方法实现:

方法1:用Canvas绘制(自由度更高)

from borb.pdf import Document, Page, PDF
from borb.pdf.canvas.canvas import Canvas
from decimal import Decimal

# 创建新文档和页面
doc = Document()
page = Page()
doc.add_page(page)

# 取出之前提取的目标图片
target_img = page_images[0][0]

# 绑定Canvas到目标页面
canvas = Canvas(page)

# 直接指定坐标绘制图片(x、y为左上角坐标,单位为PDF点)
canvas.draw_image(
    image=target_img,
    x=Decimal(100),
    y=Decimal(200),
    width=Decimal(237.72),
    height=Decimal(237.72)
)

# 保存生成的PDF
with open("output.pdf", "wb") as out_file:
    PDF.dumps(out_file, doc)

方法2:直接给Image设置位置参数

嫌Canvas麻烦的话,直接给Image对象添加x和y参数后,添加到页面即可:

from borb.pdf import Document, Page, PDF
from borb.pdf.canvas.layout.image.image import Image
from decimal import Decimal

doc = Document()
page = Page()
doc.add_page(page)

# 取出目标图片
target_img = page_images[0][0]

# 创建Image时直接指定坐标和尺寸
img = Image(
    image=target_img,
    x=Decimal(100),
    y=Decimal(200),
    width=Decimal(237.72),
    height=Decimal(237.72)
)

# 将图片添加到页面
page.add(img)

# 保存文档
with open("output.pdf", "wb") as out_file:
    PDF.dumps(out_file, doc)

注意:PDF的坐标原点在页面左下角,y轴向上递增,设置坐标时可结合页面高度(默认A4页高为842点)调整位置。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 15:20:30