PDF 格式以其版式穩定、跨平台一致的特性,被廣泛應用於合同、報告、電子表單等文檔場景。但它也因“不可隨意修改”而成為自動化處理的一大難點。藉助 Python 我們可以高效地完成 PDF 編輯任務,包括頁面調整、文本和圖像替換、表單操作、權限設置等,適用於自動歸檔、系統輸出、數據處理等應用。
本文將介紹如何使用Python編輯PDF文檔,幫助實現PDF的精確編輯與批量操作。
本文包含以下PDF編輯操作介紹:
- 在Python中載入PDF文檔
- 插入與刪除頁面
- 替換PDF中的文本
- 替換PDF中的圖片
- 填寫與讀取PDF表單字段
- 設置PDF密碼與訪問權限
- 編輯PDF元數據與查看設置
本文介紹的方法需要使用Free Spire.PDF for Python,安裝命令如下:
pip install spire.pdf.free
在Python中載入PDF文檔
可以通過初始化 PdfDocument 類並通過 LoadFromFile 從文件路徑或通過 LoadFromStream 從字節流載入已有PDF文檔進行編輯。具體操作方式如下:
# 創建PDF實例
pdf = PdfDocument()
# 從文件路徑載入PDF文件
pdf.LoadFromFile("sample.pdf")
# 從字節流載入PDF文檔
with open("sample.pdf", "rb") as f:
byte_data = f.read()
pdfStream = Stream(byte_data)
pdf = PdfDocument(pdfStream)
可根據需要選擇載入PDF文檔的方法。
插入與刪除頁面
PDF 頁面結構可通過 Pages 集合動態修改。你可以插入空白頁用於文檔補充,或刪除無效頁實現結構優化。
操作步驟與方法:
- 使用
PdfDocument.LoadFromFile()加載現有文檔; - 用
Pages.Insert()插入新頁面; - 用
Pages.RemoveAt()刪除指定頁面; - 使用
SaveToFile()和Close()保存關閉文檔。
from spire.pdf import PdfDocument, PdfPageSize, PdfMargins, PdfPageRotateAngle
pdf = PdfDocument()
pdf.LoadFromFile("Sample.pdf")
# 插入第一頁(旋轉90度)
pdf.Pages.Insert(0, PdfPageSize.A4(), PdfMargins(50, 60), PdfPageRotateAngle.RotateAngle90)
# 刪除第二頁
pdf.Pages.RemoveAt(1)
pdf.SaveToFile("output/InsertDeletePage.pdf")
pdf.Close()
替換PDF中的文本
通過 PdfTextReplacer,可以查找並替換頁面內的指定字符串,常用於自動填充模板、內容糾正等場景。
操作步驟與方法:
- 使用
PdfTextReplacer()創建替換器; - 設置匹配選項(如
ReplaceActionType.IgnoreCase); - 使用
ReplaceAllText()替換文本; - 保存文件。
from spire.pdf import PdfDocument, PdfTextReplacer, ReplaceActionType, Color
pdf = PdfDocument()
pdf.LoadFromFile("Sample.pdf")
for i in range(pdf.Pages.Count):
page = pdf.Pages.get_Item(i)
replacer = PdfTextReplacer(page)
replacer.Options.ReplaceType = ReplaceActionType.IgnoreCase
replacer.ReplaceAllText("drones", "ROBOTS", Color.get_Aqua())
pdf.SaveToFile("output/ReplaceText.pdf")
pdf.Close()
替換PDF中的圖片
可通過 PdfImageHelper 獲取嵌入圖像並替換新圖,適用於更新 LOGO、批量替換視覺內容等。
操作步驟與方法:
- 獲取頁面圖像信息(
GetImagesInfo()); - 加載新圖片對象(
PdfImage.FromFile()); - 使用
ReplaceImage()替換指定圖像。
from spire.pdf import PdfDocument, PdfImageHelper, PdfImage
pdf = PdfDocument()
pdf.LoadFromFile("Sample.pdf")
page = pdf.Pages.get_Item(0)
image_info = PdfImageHelper().GetImagesInfo(page)[0]
new_image = PdfImage.FromFile("Image.png")
PdfImageHelper().ReplaceImage(image_info, new_image)
pdf.SaveToFile("output/ReplaceImage.pdf")
pdf.Close()
填寫與讀取PDF表單字段
使用 Spire.PDF 可以操作 PDF 表單,自動填寫內容並提取字段值,用於電子表單填報與數據分析。
操作步驟與方法:
- 獲取表單對象(
PdfFormWidget); - 使用
FieldsWidget遍歷字段; - 根據字段類型(如
PdfTextBoxFieldWidget)設置值或讀取值。
from spire.pdf import PdfDocument, PdfFormWidget, PdfTextBoxFieldWidget
pdf = PdfDocument()
pdf.LoadFromFile("EmployeeInformationForm.pdf")
form_widgets = PdfFormWidget(pdf.Form).FieldsWidget
# 填寫表單
for field in form_widgets:
if field.Name == "FullName":
PdfTextBoxFieldWidget(field).Text = "Amanda Ray Thompson"
# 讀取字段內容
form_values = []
for field in form_widgets:
if isinstance(field, PdfTextBoxFieldWidget):
form_values.append(f"{field.Name}: {field.Text}")
with open("output/FormValues.txt", "w") as f:
f.write("\n".join(form_values))
pdf.SaveToFile("output/FilledForm.pdf")
pdf.Close()
設置PDF密碼與訪問權限
Spire.PDF 支持對文檔加密、限制打印、複製等操作,用於保護敏感文件內容。
操作步驟與方法:
- 創建
PdfPasswordSecurityPolicy()設置密碼; - 設置加密算法(如
PdfEncryptionAlgorithm.AES_128); - 定義權限(如
PdfDocumentPrivilege.AllowPrint = True); - 使用
Encrypt()應用加密。
from spire.pdf import PdfDocument, PdfPasswordSecurityPolicy, PdfEncryptionAlgorithm, PdfDocumentPrivilege
pdf = PdfDocument()
pdf.LoadFromFile("EmployeeInformationForm.pdf")
policy = PdfPasswordSecurityPolicy("userPSD", "ownerPSD")
policy.EncryptionAlgorithm = PdfEncryptionAlgorithm.AES_128
privilege = PdfDocumentPrivilege.ForbidAll()
privilege.AllowPrint = True
privilege.AllowFillFormFields = True
policy.DocumentPrivilege = privilege
pdf.Encrypt(policy)
pdf.SaveToFile("output/EncryptedForm.pdf")
pdf.Close()
編輯PDF元數據與查看設置
文檔屬性可用於分類管理,查看設置則優化閲讀體驗。可配置標題、作者、顯示佈局等。
操作步驟與方法:
- 使用
DocumentInformation設置作者、標題; - 使用
ViewerPreferences控制工具欄隱藏、頁面佈局等; - 最後保存文檔。
from spire.pdf import PdfDocument, PdfPageLayout, PrintScalingMode
pdf = PdfDocument()
pdf.LoadFromFile("EmployeeInformationForm.pdf")
# 設置文檔元信息
pdf.DocumentInformation.Author = "John Doe"
pdf.DocumentInformation.Title = "Employee Information Form"
# 設置查看器顯示行為
prefs = pdf.ViewerPreferences
prefs.DisplayTitle = True
prefs.HideToolbar = True
prefs.PageLayout = PdfPageLayout.OneColumn
pdf.SaveToFile("output/EditViewerPreference.pdf")
pdf.Close()
總結
藉助 Python,開發者可以用少量代碼完成各類 PDF 編輯任務:
- 頁面調整:插入或刪除頁面;
- 內容修改:替換文字、圖像;
- 表單處理:填寫與讀取交互字段;
- 安全控制:設置密碼、操作權限;
- 元信息管理:修改標題作者、設置默認閲讀方式。
這些功能適用於文檔模板處理、自動歸檔、電子表單生成等多種場景,是構建輕量級文檔系統的有力工具。
📚 更多教程請參考:Spire.PDF for Python 教程中心