使用Python实现在 PDF中插入、替换和删除图片

 更新时间:2026年07月15日 08:24:59   作者:用户033212666367  
PDF 文档中的图片是内容的重要组成部分,本文详细介绍了如何使用Spire.PDF for Python库,批量操作PDF中的图片,包括按位置精准删除、保持尺寸替换等实用技巧,让你的工作流程更高效

PDF 文档中的图片是内容的重要组成部分,无论是产品照片、图表、公司 Logo 还是扫描插图,都依赖图片来增强信息表达。在实际工作中,经常需要对已有 PDF 中的图片进行更新——插入新的图片、替换过时的图片,或者移除不再需要的图片。手动使用 PDF 编辑器逐一处理效率低下,而通过 Python 编程可以轻松实现批量自动化操作。本文将介绍如何使用 Python 在 PDF 文档中插入、替换和删除图片。

环境准备

本文使用 Spire.PDF for Python 来操作 PDF 中的图片。通过以下命令安装:

pip install Spire.PDF

安装完成后,在脚本中导入相关模块即可开始使用。

向 PDF 插入图片

向 PDF 页面插入图片的核心方法是 DrawImage(),它将图片绘制到页面的指定位置和尺寸上。首先需要加载图片文件创建 PdfImage 对象,然后计算目标位置和大小,最后调用画布方法完成绘制。通过控制坐标和尺寸参数,可以精确地定位图片在页面上的位置。

from spire.pdf import *
from spire.pdf.common import *

# 创建 PDF 文档并添加页面
doc = PdfDocument()
page = doc.Pages.Add()

# 加载图片
image = PdfImage.FromFile("Logo.png")

# 计算图片的显示尺寸(按比例缩放)
width = image.Width * 0.75
height = image.Height * 0.75

# 计算居中位置
x = (page.Canvas.ClientSize.Width - width) / 2
y = 60.0

# 将图片绘制到页面
page.Canvas.DrawImage(image, x, y, width, height)

# 保存文档
doc.SaveToFile("InsertImage.pdf")
doc.Dispose()

PdfImage.FromFile() 方法从指定路径加载图片文件,支持 PNG、JPEG 等常见格式。DrawImage() 方法的最后两个参数分别控制图片的宽度和高度,通过设置不同的值可以实现缩放效果。上方代码中通过 image.Width * 0.75 将图片缩小到原始尺寸的 75%,同时保持宽高比例不变。

替换 PDF 中的已有图片

当 PDF 中的某张图片需要更新时(例如 Logo 换版、产品图更新),可以使用 PdfImageHelper 来定位已有图片并进行替换。首先获取页面上的图片信息集合,找到目标图片后,调用 ReplaceImage() 方法用新图片替换旧图片,图片的原始位置和大小会自动保留。

from spire.pdf import *
from spire.pdf.common import *

# 加载 PDF 文档
doc = PdfDocument()
doc.LoadFromFile("InsertImage.pdf")

# 获取第一个页面
page = doc.Pages[0]

# 创建图片辅助对象并获取页面上的图片信息
imageHelper = PdfImageHelper()
imageInfo = imageHelper.GetImagesInfo(page)

# 用新图片替换第一张图片
imageHelper.ReplaceImage(imageInfo[0], PdfImage.FromFile("new_logo.png"))

# 保存文档
doc.SaveToFile("ReplacedImage.pdf")
doc.Close()

GetImagesInfo() 方法返回页面上所有图片的信息对象列表,每个对象包含图片的位置、尺寸、索引等属性。ReplaceImage() 方法接收两个参数:要替换的图片信息对象和新的 PdfImage 对象。替换操作会保持图片在原文档中的位置和尺寸不变,只更新图片内容本身。

删除 PDF 中的图片

删除图片同样使用 PdfImageHelper。通过获取图片信息集合,可以按索引或按位置来定位要删除的图片,然后调用 DeleteImage() 方法将其移除。

按索引删除

如果知道要删除的是页面上的第几张图片,可以直接通过索引访问并删除:

from spire.pdf import *
from spire.pdf.common import *

pdf = PdfDocument()
pdf.LoadFromFile("InsertImage.pdf")
page = pdf.Pages[0]

imageHelper = PdfImageHelper()
imageInfos = imageHelper.GetImagesInfo(page)

# 删除第一张图片
imageHelper.DeleteImage(imageInfos[0])

pdf.SaveToFile("DeletedImage.pdf")
pdf.Close()

按位置删除

当需要根据图片在页面上的位置来决定是否删除时,可以通过 Bounds 属性判断图片的区域范围。Contains() 方法检查某个坐标点是否落在图片区域内,IntersectsWith() 方法则判断图片区域是否与指定矩形区域相交。

from spire.pdf import *
from spire.pdf.common import *

pdf = PdfDocument()
pdf.LoadFromFile("document.pdf")
page = pdf.Pages[0]

imageHelper = PdfImageHelper()
imageInfo = imageHelper.GetImagesInfo(page)

for i in range(len(imageInfo)):
    # 删除包含指定坐标点的图片
    if imageInfo[i].Bounds.Contains(49.68, 73.1):
        imageHelper.DeleteImage(imageInfo[i])
    # 删除与指定区域相交的图片
    if imageInfo[i].Bounds.IntersectsWith(RectangleF(100.0, 500.0, 30.0, 40.0)):
        imageHelper.DeleteImage(imageInfo[i])

pdf.SaveToFile("DeletedByBounds.pdf")
pdf.Close()

按位置删除的方式在批量处理中特别有用。例如,需要移除页面上某个固定区域的所有图片(如页眉 Logo 区域),或者清除特定坐标范围内的插图,都可以通过这种方式精确定位并删除。

批量处理多个页面

实际应用中,PDF 文件往往包含多个页面,需要对所有页面中的图片进行统一操作。通过遍历 Pages 集合,可以对每个页面执行相同的图片处理逻辑。

from spire.pdf import *
from spire.pdf.common import *

doc = PdfDocument()
doc.LoadFromFile("multi_page.pdf")

imageHelper = PdfImageHelper()

# 遍历所有页面,替换每页的第一张图片
for page in doc.Pages:
    imageInfo = imageHelper.GetImagesInfo(page)
    if len(imageInfo) > 0:
        imageHelper.ReplaceImage(imageInfo[0], PdfImage.FromFile("new_logo.png"))

doc.SaveToFile("batch_replaced.pdf")
doc.Close()

这种批量处理方式适合统一更新公司 Logo、替换水印、或移除所有页面中特定位置图片等场景。

实用技巧

在处理 PDF 图片时,有几点值得注意。替换图片时,新图片的原始尺寸可能与旧图片不同,但 ReplaceImage() 会保持原来的显示尺寸,因此宽高比差异较大的图片可能会出现拉伸或压缩。如果需要精确控制,可以在替换前先调整新图片的尺寸。

删除图片后,页面上会留下空白区域。如果需要同时清除空白区域或调整后续内容的排版,需要额外处理页面布局。

在批量操作前,建议先通过 GetImagesInfo() 获取图片信息并打印出来检查,确认图片的索引、位置和尺寸是否符合预期,避免误删或误替换。

总结

本文介绍了使用 Python 操作 PDF 图片的几种核心场景:向页面插入新图片、替换已有图片、按索引或按位置删除图片,以及跨页面的批量处理。这些操作主要依赖 PdfImagePdfImageHelper 两个核心类。

掌握这些技巧后,可以进一步探索图片的高级操作,如设置图片透明度、添加图片水印、旋转图片角度等。将图片操作与文本处理、页面管理等功能结合使用,能够构建功能完备的 PDF 自动化处理流程。

到此这篇关于使用Python实现在 PDF中插入、替换和删除图片的文章就介绍到这了,更多相关Python PDF图片操作内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Python装饰器的两种使用心得

    Python装饰器的两种使用心得

    装饰器(Decorators)是 Python 的一个重要部分。简单地说:他们是修改其他函数的功能的函数。他们有助于让我们的代码更简短,也更Pythonic(Python范儿),今天通过本文给大家分享Python装饰器使用小结,感兴趣的朋友一起看看吧
    2021-09-09
  • python修改操作系统时间的方法

    python修改操作系统时间的方法

    这篇文章主要介绍了python修改操作系统时间的方法,涉及Python同步网络时间与本机时间的相关技巧,需要的朋友可以参考下
    2015-05-05
  • Python2.7实现多进程下开发多线程示例

    Python2.7实现多进程下开发多线程示例

    这篇文章主要为大家详细介绍了Python2.7实现多进程下开发多线程示例,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-05-05
  • 使用python的turtle函数绘制一个滑稽表情

    使用python的turtle函数绘制一个滑稽表情

    Turtle库是Python语言中一个很流行的绘制图像的函数库,今天通过实例代码给大家分享使用python的turtle函数绘制一个滑稽表情,一起看看吧
    2020-02-02
  • Python绘制全球疫情变化地图的实例代码

    Python绘制全球疫情变化地图的实例代码

    这篇文章主要介绍了使用Python绘制全球疫情变化地图的实例代码,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-04-04
  • Python warning警告出现的原因及忽略方法

    Python warning警告出现的原因及忽略方法

    在本篇文章里小编给大家分享的是关于Python warning警告出现的原因及忽略方法,有需要的朋友们可以学习参考下。
    2020-01-01
  • 基于Python开发图片分割器

    基于Python开发图片分割器

    在图像处理领域,经常需要将一张大图切分成多个小图片,本文将介绍如何使用Python开发一个带图形界面的图片分割工具,有需要的可以参考一下
    2024-12-12
  • python批量识别图片指定区域文字内容

    python批量识别图片指定区域文字内容

    这篇文章主要为大家详细介绍了python识别图片指定区域文字内容,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-04-04
  • python 生成器生成杨辉三角的方法(必看)

    python 生成器生成杨辉三角的方法(必看)

    下面小编就为大家带来一篇python 生成器生成杨辉三角的方法(必看)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-04-04
  • 如何用python做逐步回归

    如何用python做逐步回归

    这篇文章主要介绍了如何用python 做逐步回归,帮助大家更好的理解和学习使用python,感兴趣的朋友可以了解下
    2021-04-04

最新评论