news 2026/4/18 9:41:00

PDF图片处理:从提取到精确定位

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
PDF图片处理:从提取到精确定位

在处理PDF文档时,经常会遇到需要提取文档中的图片并重新定位的情况。本文将介绍如何使用Python库borb来实现这一功能,具体包括如何提取图片及其坐标,并将图片精确地插入到新的位置。

提取图片及坐标

步骤一:设置图片提取器

首先,我们需要定义一个ImageExtraction类,用于捕获PDF中的图片。这个类继承自EventListener

fromborb.pdf.documentimportDocumentfromborb.pdf.page.pageimportPagefromborb.pdf.canvas.event.event_listenerimportEventListenerfromborb.pdf.canvas.event.image_render_eventimportImageRenderEventfromtypingimportList,Dict,AnyfromPILimportImageasPILImagefromdecimalimportDecimalclassImageExtraction(EventListener):def__init__(self):self.images:Dict[int,List[Any]]={}def_event_occurred(self,event:ImageRenderEvent)->None:ifevent.get_page()notinself.images:self.images[event.get_page()]=[]self.images[event.get_page()].append({'image':event.get_image(),'x':event.get_x(),'y':event.get_y(),'width':event.get_width(),'height':event.get_height()})

步骤二:加载PDF文档

使用以下代码加载PDF文档并应用ImageExtraction

withopen("test_image.pdf","rb")asin_file_handle:doc=Document()doc.load(in_file_handle,[ImageExtraction()])assertdocisnotNone

步骤三:获取图片信息

I=ImageExtraction()print(I.images)

这将输出一个字典,其中包含每个页面上的图片信息,如下所示:

{0:[{'image':<PIL.JpegImagePlugin.JpegImageFile image mode=RGB size=660x660 at0x1A03AC5FEE0>,'x':Decimal('100'),'y':Decimal('200'),'width':Decimal('660'),'height':Decimal('660')}]}

插入图片到新的位置

步骤一:选择页面布局

borb提供了几种页面布局方式,但要实现精确的图片定位,我们可以选择PageLayoutAbsoluteLayout,它允许我们在页面上任意位置添加内容:

fromborb.pdf.canvas.layout.page_layout.absolute_layoutimportAbsoluteLayout layout=AbsoluteLayout(page)

步骤二:插入图片

使用提取到的图片信息,我们可以精确地将图片放置在新的位置:

forpage_num,imagesinI.images.items():forimage_datainimages:pil_image=image_data['image']new_x,new_y=Decimal('300'),Decimal('400')# 新的位置坐标layout.add(Image(pil_image,x=new_x,y=new_y,width=image_data['width'],height=image_data['height']))

这样,我们不仅提取了PDF文档中的图片,还获取了它们的原始坐标,并将它们精确地插入到新的位置。

结论

通过使用borb库的EventListenerAbsoluteLayout,我们可以实现从PDF文档中提取图片及其坐标,并将其重新定位到任何我们想要的位置。这种方法不仅提高了PDF文档处理的灵活性,还为文档的再利用和重新设计提供了有力的工具。希望本文对你有所帮助,尝试在自己的项目中使用这些技术吧!

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/18 6:08:44

verl开源框架深度体验:来自字节跳动的技术实力

verl开源框架深度体验&#xff1a;来自字节跳动的技术实力 【免费下载链接】verl verl: Volcano Engine Reinforcement Learning for LLMs 项目地址: https://gitcode.com/GitHub_Trending/ve/verl verl不是又一个实验性质的RL玩具框架——它是字节跳动火山引擎团队为真实生产…

作者头像 李华
网站建设 2026/4/17 21:28:50

高效视频备份工具:douyin-downloader全功能数字资产管理解决方案

高效视频备份工具&#xff1a;douyin-downloader全功能数字资产管理解决方案 【免费下载链接】douyin-downloader 项目地址: https://gitcode.com/GitHub_Trending/do/douyin-downloader 在数字内容爆炸的时代&#xff0c;如何安全保存珍贵的视频记忆&#xff1f;douyi…

作者头像 李华
网站建设 2026/4/18 9:19:43

Glyph让AI绘画更智能:视觉推理新玩法揭秘

Glyph让AI绘画更智能&#xff1a;视觉推理新玩法揭秘 1. 这不是又一个“看图说话”模型&#xff0c;而是让AI真正“读懂图像”的新范式 你有没有试过让AI模型回答一张复杂图表里的问题&#xff1f;比如&#xff1a;“这张折线图中&#xff0c;2023年Q3的销售额比Q2高多少&…

作者头像 李华
网站建设 2026/4/18 0:35:46

Keil uVision5下载常见问题解析:工业控制场景专用

以下是对您提供的技术博文进行 深度润色与专业重构后的版本 。我以一位深耕工业嵌入式开发十余年的工程师兼技术博主身份&#xff0c;用更自然、更具实战温度的语言重写全文——摒弃模板化结构&#xff0c;强化逻辑流与现场感&#xff1b;去除AI痕迹&#xff0c;注入真实项目…

作者头像 李华
网站建设 2026/4/17 23:42:19

Z-Image-Turbo推理慢?GPU加速优化部署案例让速度提升200%

Z-Image-Turbo推理慢&#xff1f;GPU加速优化部署案例让速度提升200% 你是不是也遇到过这样的情况&#xff1a;Z-Image-Turbo WebUI点下“生成”按钮后&#xff0c;盯着进度条等了快一分钟&#xff0c;结果只出了一张图&#xff1f;明明标榜“Turbo”&#xff0c;却跑得像老式…

作者头像 李华
网站建设 2026/4/18 0:25:33

Proteus仿真软件多模块电路图设计实践

以下是对您提供的博文内容进行 深度润色与结构重构后的技术文章 。全文已彻底去除AI生成痕迹&#xff0c;采用资深嵌入式系统工程师教学博主的口吻撰写&#xff0c;语言自然、逻辑严密、案例扎实&#xff0c;兼具专业深度与工程温度。所有技术细节均严格基于Proteus官方文档、…

作者头像 李华