Python 操作PDF图片 – 添加、替换、删除PDF中的图片

PDF文件中的图片可以丰富文档内容,提升用户的阅读体验。除了在PDF中添加图片外,有时也需要替换或删除其中的图片,以改进视觉效果或更新信息。文本将提供以下三个示例,介绍如何使用Python 操作PDF文件中的图片:

目录

1. 使用 Python 在PDF中添加图片

2.使用 Python 替换PDF中的图片

3. 使用 Python 删除PDF中的图片


首先,我们需要安装一个名为 Spire.PDF for Python 的Python库,它可以用于处理PDF文件。可以使用pip来安装该库:

pip install Spire.PDF

1. 使用Python在PDF中添加图片

Spire.PDF for Python库提供了 PdfPageBase.Canvas.DrawImage() 方法,可用于在PDF页面的指定坐标处绘制加载的图片。实现代码如下:

from spire.pdf.common import *
from spire.pdf import *# 创建PdfDocument对象
pdf = PdfDocument()# 添加一页
page = pdf.Pages.Add()# 加载一张图片
image = PdfImage.FromFile("图片1.jpeg")# 指定图片尺寸
width = image.Width * 0.70
height = image.Height * 0.70# 指定图片所在的XY坐标
x = 60.0
y = 30.0# 将图片绘制在页面指定位置
page.Canvas.DrawImage(image, x, y, width, height)# 保存PDF文件
pdf.SaveToFile("PDF添加图片.pdf", FileFormat.PDF)

生成文件:

2.使用Python替换PDF中的图片

要用新图片替换PDF中的图片,可以使用 PdfPageBase.ReplaceImage() 方法。实现代码如下:

from spire.pdf.common import *
from spire.pdf import *# 加载PDF文件
pdf = PdfDocument()
pdf.LoadFromFile("PDF添加图片.pdf")# 获取第一页
page = pdf.Pages[0]# 加载一张图片
image = PdfImage.FromFile("图片2.png")# 获取页面中的图片信息
imageInfo = page.ImagesInfo# 用加载的新图片替换页面中第一张图片
page.ReplaceImage(imageInfo[0].Index, image)# 保存PDF文件
pdf.SaveToFile("替换图片.pdf", FileFormat.PDF)

效果图:

 

3. 使用Python删除PDF中的图片

要删除指定的图片可以使用 PdfPageBase.DeleteImage(index)。 实现代码如下:

from spire.pdf.common import *
from spire.pdf import *# 加载PDF文件
pdf = PdfDocument()
pdf.LoadFromFile("PDF添加图片.pdf")# 获取第一页
page = pdf.Pages[0]# 删除该页中的第一张图片
page.DeleteImage(0)# 保存PDF文件
pdf.SaveToFile("删除图片.pdf", FileFormat.PDF)

Spire.PDF for Python库提供了相应的接口来添加、替换、删除PDF图片,通过运行上面3段示例代码即可实现对应的操作。如想了解更多Python处理PDF文档的示例,可查看:

Spire.PDF for Python 中文教程Spire.PDF for Python 是一款完全独立的 PDF 开发组件,用于在 Python 程序中创建、读取、编辑、转换和保存 PDF 文档。开发人员可以使用 Spire.PDF for Python 类库来新建 PDF 文档或对现有的 PDF 文档进行处理,不需要任何第三方工具。同时,该组...icon-default.png?t=N7T8https://www.e-iceblue.cn/pdfforpython/spire-pdf-for-python-program-guide-content.html

去除红色水印:

申请免费临时授权文件创建、编辑、转换和打印 Office:Excel (xls,xlsx), Word (doc,docx), PowerPoint, PDF 及 Barcode icon-default.png?t=N7T8https://www.e-iceblue.cn/misc/temporary-license.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/4776.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

qt学习篇---界面按键关联(信号和槽)

目录 1.qt基础 2.做一个界面 创建project UI界面设计 信号和槽 1.控件改名字 2.什么是信号和槽 3.怎么关联信号和槽 自动关联 手动关联 1.qt基础 qt可移植性强,不久会用到MCU。很有意义学习 2.做一个界面 创建project 不要中文路径 选择QWidget .pro文件…

机器学习之K-medians聚类

K-medians聚类是一种聚类算法,类似于K-means,但是它使用中位数来确定簇的中心,而不是平均值。这种方法在处理数据中存在离群值或异常值时比较有用,因为中位数对离群值不敏感。K-medians的步骤与K-means类似,但在每次迭代中,它使用中位数来更新簇的中心。 K-medians的算法…

基于Lucene的搜索引擎设计与实现:技术总结与展望

论文、答辩资料、源代码见下 引言 在大数据时代背景下,如何快速有效地从海量网络信息中检索出有价值的信息,是当前技术领域面临的一大挑战。本次毕业设计的核心工作是设计并实现一个基于Lucene的搜索引擎,旨在提高信息检索的效率和准确性。…

强力的应用容器引擎---------Docker的资源控制

目录 一、CPU 资源控制 1.1cgroups有四大功能 1.2设置CPU使用率上限 1.2.1查看CPU使用率 1.2.2进行CPU压力测试 1.2.3设置50%的比例分配CPU使用时间上限 1.3设置CPU资源占用比(设置多个容器时才有效) 1.3.1创建两个容器为hua1 和hua2&#xff0c…

怎么检查ubuntu22.04服务器机器被挖矿了

如果怀疑你的 Ubuntu 22.04 系统被挖矿程序占用,可以通过一系列检查步骤来确认这一疑问。这些步骤可以帮助你发现系统是否存在未授权的挖矿活动: 1. 检查CPU和GPU使用率 挖矿程序通常会导致CPU或GPU的使用率异常升高。使用以下命令检查系统资源的使用情…

秋招后端开发面试题 - Java多线程(下)

目录 Java多线程前言面试题synchronized?作用?synchronized 怎么使用?构造方法可以用 synchronized 修饰吗?synchronized 底层原理了解吗?除了原子性,synchronized 可见性,有序性,可…

限流--4种经典限流算法讲解--单机限流和分布式限流的实现

为什么需要限流 系统的维护使用是需要成本的,用户可能使用科技疯狂刷量,消耗系统资源,出现额外的经济开销问题: 控制成本>限制用户的调用次数用户在短时间内疯狂使用,导致服务器资源被占满,其他用户无…

Q1季度方便速食行业线上市场(京东天猫淘宝)销售数据分析

方便食品行业作为快速消费品市场的重要组成部分,近几年表现出较为强劲的发展势头。当然,每年的食品安全问题也在一定程度上影响着市场的良性健康发展。那么,今年Q1季度方便食品的线上发展如何? 根据鲸参谋数据显示,Q1…

制造企业如何打造客户服务核心竞争力?[AMT企源典型案例]

引言 产品同质化严重,竞争的焦点从产品转向服务,企业的管理模式也要相应转变。那么如何打造围绕服务的核心竞争力?相信以下案例会给大家一些启发。 项目背景: 售后服务在市场竞争中的作用凸显 A公司是一家医疗器械生产制造企业…

【多维动态规划】Leetcode 72. 编辑距离【中等】

编辑距离 给你两个单词 word1 和 word2, 请返回将 word1 转换成 word2 所使用的最少操作数 。 你可以对一个单词进行如下三种操作: 插入一个字符删除一个字符替换一个字符 示例 1: 输入:word1 “horse”, word2 “ros” 输…

kali 网络环境设置

一、修改网卡配置 1.1 系统桌面上单击右键,在弹出的菜单中选择 Open Terminal Here。 1.2 输入命令 vim /etc/network/interfaces,显示配置网卡参数为。iface lo 一般指 本地环回接口, iface eth0 网卡为系统正在使用的网卡,其中的…

将后端返回的正则字符串转为正则对象

/*这个正则表示的是输入框前后不得有空格*/ let re v.regex.replace("\n", ""); // 将后端返回的正则字符串转为正则对象 let reg new Function("return " re)(); if (reg.test(v.value) true) { /*所需要写的事件*/ } else { /*空格的时候的…

elementUi中el-date-picker;两个日期选择器第二个必须在第一个之后

<el-row><el-col :span"12"><el-form-item label"实际开始日期" style"margin-top: 10px;" proprealBeginDate><el-date-picker v-model"pmTaskProgressFeedback.realBeginDate" type"date" placehold…

浏览器的本地存储---localstorage

web存储对象 Web 存储对象 localStorage 和 sessionStorage 允许我们在浏览器上保存键/值对。 这两个对象保存再本地&#xff08;客户端&#xff09;&#xff0c;允许保存至少 5MB 的数据&#xff08;或更多&#xff09;&#xff0c;这些数据不会因为页面刷新而销毁&#xff0…

高扬程水泵的性能与应用领域 /恒峰智慧科技

在现代社会中&#xff0c;科技的发展为我们的生活带来了无数便利和可能性。其中&#xff0c;高扬程水泵作为一种高效能的水泵&#xff0c;其独特的设计使其在各个领域都有着广泛的应用&#xff0c;尤其是在森林消防中。 一、高扬程水泵的性能 1. 高扬程&#xff1a;高扬程水泵…

前端深度的技术有哪些?

前端技术的深度涵盖了一系列专业知识、技术栈和实践方法&#xff0c;这些内容可以帮助开发者构建高性能、可维护、用户体验优秀的Web应用程序。以下是前端深度技术的一些关键领域&#xff1a; 1. 现代Web框架与库 React、Vue.js、Angular等主流框架的深入理解和实战经验&#…

TinyML之Hello world----基于Arduino Nano 33 BLE Sense Rev2的呼吸灯

早期版本的Hello World 这应该是一个逼格比较高的呼吸灯了&#xff0c;用ML来实现呼吸灯功能&#xff0c;之前已经有大佬发过类似的文章&#xff1a;https://blog.csdn.net/weixin_45116099/article/details/126310816 当前版本的Hello World 这是一个ML的入门例程&#xff…

C#身份查验接口、身份证文字识别接口、金融身份验证

针对金融领域远程自主开户的实名认证&#xff0c;翔云人工智能开放平台提出了有针对性的解决方案。翔云实名认证API其中包含了身份证实名认证、人脸识别、人证合一和银行卡实名认证&#xff0c;可快速识别提取用户身份信息&#xff0c;实时联网权威数据源进行用户身份的验证&am…

常见面试题总结

1. 苍穹外卖的模块 苍穹外卖大方向上主要分为管理端和用户端 管理端使用vue开发&#xff0c;主要是商家来使用&#xff0c;提供餐品的管理功能&#xff0c;主要有下面几个模块&#xff1a; 员工模块&#xff0c;提供员工账号的登录功能和管理功能 分类、菜品、套餐模块&…