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
英文地址,請注明出處:http://en.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…