Stories

Detail Return Return

用Python編輯PDF文檔:結構、內容與安全設置 - Stories Detail

Python編輯PDF文檔

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 教程中心

user avatar yunxiao0816 Avatar
Favorites 1 users favorite the story!
Favorites

Add a new Comments

Some HTML is okay.