Python 轻松实现替换或修改 PDF 文字

在日常开发或文档处理过程中,经常会遇到需要对 PDF 文档中的文字进行修改的场景。例如更新合同条款、修正报表数据,或者批量替换文件中的特定内容。由于 PDF 格式以固定排版为特点,直接修改文字不像 Word 那样直观,因此需要借助专门的库来实现。

在 Python 中,有多种处理 PDF 的库,但大多数库在修改已有文字方面支持有限。Spire.PDF for Python 提供了较为完整的文字处理功能,能够对 PDF 页面上的文字内容进行精确替换和修改,而且无需依赖 Adobe Acrobat。本文将分享如何使用该库在 Python 中实现替换或修改 PDF 文字。


库安装方法

在使用 Spire.PDF for Python 之前,需要先安装该库。可以通过 pip 进行安装:

pip install spire.pdf

安装完成后,即可在 Python 项目中导入相关模块开始处理 PDF 文档。


基本使用流程

使用 Spire.PDF for Python 替换文字的基本步骤如下:

  • 加载 PDF 文档
    创建 PdfDocument 对象,并加载目标 PDF 文件。
  • 获取页面
    使用 pdf.Pages.get_Item(index) 获取需要操作的页面。
  • 创建文本替换器
    使用 PdfTextReplacer(page) 创建替换器对象,准备进行文字替换。
  • 执行替换操作
    调用 ReplaceText 替换第一次出现的文字,或使用 ReplaceAllText 替换全部文字,并可设置文字颜色。
  • 保存修改后的 PDF
    完成替换后,将文档保存为新的 PDF 文件,保持原有排版。

单页替换示例(替换第一次出现的文字)

from spire.pdf import *
from spire.pdf.common import *# 创建 PDF 文档对象并加载文件
pdf = PdfDocument()
pdf.LoadFromFile("示例文档.pdf")# 获取文档的第一页
page = pdf.Pages.get_Item(0)# 创建 PdfTextReplacer 对象
replacer = PdfTextReplacer(page)# 替换第一次出现的 "主要功能"
replacer.ReplaceText("主要功能", "功能介绍")# 保存修改后的 PDF
pdf.SaveToFile("替换第一个文本.pdf")
pdf.Close()

在这个示例中,ReplaceText 仅替换页面中第一次出现的目标文字。


替换所有出现的文字

如果需要替换文档中所有匹配文字,可以使用 ReplaceAllText 方法:

# 替换页面中所有的 "主要功能"
replacer.ReplaceAllText("主要功能", "功能介绍")# 或者替换所有文字并设置新文字颜色
replacer.ReplaceAllText("主要功能", "功能介绍", Color.get_Red())

通过这种方式,不仅可以替换全部文字,还可以在替换时修改文字颜色,便于突出显示修改内容。


批量替换 PDF 文件中的文字

在实际项目中,经常需要对多个 PDF 文件执行相同的替换操作。下面示例展示如何批量处理文件夹中的 PDF 文件,并替换所有出现的文字,同时设置文字颜色。

import os
from spire.pdf import *
from spire.pdf.common import *
from System.Drawing import Color# 设置 PDF 文件夹路径
pdf_folder = "pdf_files"
output_folder = "pdf_modified"# 如果输出文件夹不存在则创建
if not os.path.exists(output_folder):os.makedirs(output_folder)# 遍历文件夹中的所有 PDF 文件
for file_name in os.listdir(pdf_folder):if file_name.endswith(".pdf"):pdf_path = os.path.join(pdf_folder, file_name)pdf = PdfDocument()pdf.LoadFromFile(pdf_path)# 遍历每一页进行文字替换for i in range(pdf.Pages.Count):page = pdf.Pages.get_Item(i)replacer = PdfTextReplacer(page)# 替换页面中所有出现的文字,并设置新文字颜色为红色replacer.ReplaceAllText("旧文字", "新文字", Color.get_Red())# 保存修改后的 PDFoutput_path = os.path.join(output_folder, file_name)pdf.SaveToFile(output_path)pdf.Close()print(f"{file_name} 已处理完成")

说明

  • 遍历文件夹
    使用 Python 的 os.listdir 遍历指定文件夹中的 PDF 文件,实现批量处理。
  • 逐页替换文字
    PDF 文档由多个页面组成,使用 pdf.Pages.get_Item(i) 获取每一页,再创建 PdfTextReplacer 对象进行替换。
  • 替换所有出现的文字并设置颜色
    ReplaceAllText 方法会替换页面中所有匹配文字,并通过 Color.get_Red() 设置替换文字颜色。
  • 保存输出
    修改后的 PDF 文件保存到指定输出文件夹,保持原文件不被覆盖。

总结

在处理 PDF 文档时,文本替换是常见的操作需求。通过使用 Spire.PDF for Python,可以灵活地进行单页文字替换、全部文字替换、设置文字颜色,以及批量处理多个 PDF 文件。这些方法能够帮助开发者在日常文档维护和数据更新中提高效率,同时保持原有排版和样式的完整性。

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

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

相关文章

CI/CD流水线优化实战:从30分钟到5分钟的效能革命

关键词:CI/CD优化、GitHub Actions、Jenkins、自动化部署、流水线加速 一、引言:CI/CD流水线为何需要优化? 在现代软件开发中,CI/CD(持续集成/持续交付)已成为DevOps实践的核心环节。然而,许多团队的流水线存在效率低下问题,​​平均构建时间超过30分钟​​,严重制约…

神经网络矩阵的点乘与叉乘概述

点乘点乘:两个矩阵对应位置元素相乘(逐元素级 element - wise)实现方式:可通过 * 和 torch.mul(x, y) 函数实现(含广播机制)模型符号:一个圆圈中间加一个实心点叉乘叉乘:传统线性代数…

PHP学习(第三天)

网站访问流程 一、静态网站访问流程(如 index.html)1. 流程是怎么样的? 静态网站的页面内容固定,不需要服务器做额外计算,直接把文件返回给浏览器。访问流程大致如下:用户输入网址或点击链接 用户在 个人设…

【办公自动化】如何使用Python脚本自动化处理音频?

在日常办公和内容创作中,音频处理是一项常见需求。无论是处理会议录音、制作播客、编辑音乐背景,还是进行语音识别,Python都能帮助我们高效地完成这些任务。本文将介绍如何使用Python实现音频处理自动化,包括格式转换、音频拼接、…

OpenHarmony AVSession深度解析(二):从本地会话到分布式跨设备协同的完整生命周期管理

1. 系统概述 AVSession是OpenHarmony多媒体框架中的核心组件,负责管理音视频会话的生命周期、状态同步和跨设备协同。它提供了统一的接口供应用创建会话、设置元数据、控制播放状态,并支持分布式场景下的会话迁移。 2. 架构设计 2.1 核心类结构 #mermaid-svg-QwwujBwB3Wo6…

架构思维:在复杂系统中寻找秩序的底层逻辑

在商业世界中,架构师常被视为神秘的存在。懂架构不一定是大师,但,大师一定善于架构,善于拨开迷雾,看透全局。他们穿梭于代码与流程之间,用看不见的线条编织着数字世界的经纬。 架构天然的使命就是面对复杂…

国产凝思debian系Linux离线安装rabbitmq教程步骤

系统环境 由于国内访问debian的apt源太慢了,花了很多很多时间后,反而超时报错。所以采用离线安装方式。 uname -a Linux bogon 4.19.0-11-linx-security-amd64 #1 SMP Linx 4.19.146-1linx10 (2023-05-30) x86_64 GNU/Linux下载安装包 在有网络的电脑…

开发避坑指南(48):Java Stream 判断List元素的属性是否包含指定的值

需求 Java Stream 判断List元素的属性是否包含指定的值该怎么实现? 代码实现 直接上代码 public class OrderInfo {private BigDecimal fee;private String orderStatus; }public class ListTest2 {public static void main(String[] args) {OrderInfo orderInfo n…

Arbess V2.0.7版本发布,支持Docker/主机蓝绿部署任务,支持Gradle构建、Agent运行策略

Arbess 是一款国产开源免费的 CI/CD 工具,产品开源免费,简洁易用。本周Arbess V2.0.7版本发布,新增Docker/主机蓝绿部署策略,Gradle构建任务,新增Agent执行策略。 1、版本更新日志 新增 ➢ 支持Docker蓝绿部署、主机…

万物皆可PID:深入理解控制算法在OpenBMC风扇调速中的应用

引言:智能散热,不仅仅是“开”和“关” 想象一下服务器中的风扇管理。最简单的策略是“bang-bang”控制(双位控制):温度超过阈值,风扇全速运转;温度低于阈值,风扇低速或停止。这种策…

CH347应用 USB转I2C功能之:开源项目i2c-tools工具的使用(2)

目录前言开源地址使用说明i2cdetecti2cdumpi2cset前言 上一篇博客中介绍了CH347配合i2c-tools在Linux下的使用,但我们能不能在Windows中也是用i2c-tools进行I2C设备的调试呢。这里我将i2cdetect、i2cdump、i2cset三个常用的工具移植至Windows平台,并进行…

代码随想录算法训练营第50天 | 图论理论基础、深搜理论基础、98. 所有可达路径、广搜理论基础

图论理论基础 题目链接/文章讲解:https://www.programmercarl.com/kamacoder/%E5%9B%BE%E8%AE%BA%E7%90%86%E8%AE%BA%E5%9F%BA%E7%A1%80.html 了解图的基本概念,连通性,图的构造,图的遍历方式 深搜理论基础 题目链接/文章讲解&…

华为HCIE-云计算培训课程有哪些?

华为HCIE云计算认证是华为公司推出的高级别认证,对于想要在云计算领域发展,提高专业技能和竞争力的人来说具备极高的价值。接下里就来聊聊华为HCIE云计算的培训课程都有哪些?如何高效备考呢?一,HCIE云计算培训课程1、理…

DCS控制回路优化:基于WebSocket的实时参数远程调校方法论

说起来,我前段时间刚啃完一个化工厂DCS控制回路优化的硬骨头,用WebSocket搞成了实时参数远程调校,现在回想起来,满是能跟大家唠的实操经验,说不定你们以后碰到类似情况,能少走些冤枉路。先跟大家交代下背景…

《JVM如何排查OOM》

目录 一、什么是OOM? 二、OOM排查的整体思路 三、OOM排查工具大全 四、实战:不同OOM场景的排查方法 场景1:Java heap space 场景2:Metaspace 场景3:GC overhead limit exceeded 五、高级排查技巧 1. 使用Arth…

ubuntu22.04 安装Docker

一、更新系统包索引sudo apt update && sudo apt upgrade -y二、安装必要依赖安装 curl、gnupg等工具,用于添加 Docker 官方 GPG 密钥和仓库:sudo apt install -y ca-certificates curl gnupg三、添加 Docker 官方 GPG 密钥sudo install -m 0755…

高低压隔离器的技术演进与行业赋能

电力电子系统的安全架构与效率升级,始终依赖高低压电路间的可靠隔离。高低压隔离器作为能量传输与信号控制的核心媒介,通过持续迭代的绝缘技术与结构创新,为新能源装备、工业驱动系统提供底层安全屏障。其阻断电位差传导、抑制电磁干扰的能力…

嵌入式 - ARM5

一、led点灯代码优化1. 配置寄存器volatile1.​​禁止优化​​不对该变量的读写操作进行任何优化(如删除“冗余”读取或延迟写入)。2.​​强制内存访问​​每次访问该变量时,必须直接从内存(或硬件寄存器)中读取或写入…

SSH登录管理

两种配置方法-密码 -密钥(免密)ansible 默认 rhel9 禁止 root 用密码登陆,不禁止用密钥登陆 ---修改方式----vim /etc/ssh/sshd_config 修改此文件#PermitRootLogin prohibit-passwordPermitRootLogin yes 改为允许systemctl res…

远程连接--向日葵

下载安装卸载 向日葵语言设置 点击下面的图标,点击"设置": 问题解决 向日葵被连接之后自动黑屏 取消下面的勾选框: 向日葵连接之后黑屏 检查系统的协议: echo $XDG_SESSION_TYPE 如果是: wayland 需要切换为x11. 设置永久默认使用 X11: sudo vi /etc/gdm3/custom…