在現代數字化辦公環境中,PDF 已成為一種廣泛使用的文件格式,尤其是在需要保持文檔格式時。為了保護文檔內容,添加水印是一種常見的方法。本文將介紹如何使用 Python 為 PDF 文件添加水印,具體步驟將通過代碼示例詳細説明。

一、準備工作

要實現 PDF 水印的添加,我們將使用 Spire.PDF,這是一個強大的 PDF 操作庫,能夠輕鬆處理 PDF 文檔。你可以從 Spire.PDF 官方網站下載和安裝相關庫。確保在你的環境中配置好 Python 和必要的依賴庫。

二、實現步驟

1. 導入必要的庫

首先,我們需要導入 Spire.PDF 相關的類。以下是基本的導入語句:

from spire.pdf import *
from spire.pdf.common import *
import math

2. 創建 PdfDocument 對象

接下來,我們需要創建一個 PdfDocument 類的對象,並加載要處理的 PDF 文件。

# 創建PdfDocument類的對象
doc = PdfDocument()

# 從指定路徑加載PDF文檔
doc.LoadFromFile("C:\\Users\\Administrator\\Desktop\\Input.pdf")

在這裏,我們可以將路徑替換為你的 PDF 文件的實際路徑。

3. 設置水印參數

我們需要定義水印的文本內容和字體樣式。在本例中,我們將使用“禁止複製”作為水印文本。

# 為水印字體創建PdfTrueTypeFont類的對象
font = PdfTrueTypeFont("黑體", 48.0, 0, True)

# 指定水印文本
text = "禁 止 復 制"

字體可以根據你的需要進行調整,例如使用不同的文本樣式或大小。

4. 測量文本尺寸

為了確保水印文本能夠正確地顯示在 PDF 中,我們需要測量文本的寬度和高度:

# 測量文本的尺寸以確保正確定位
text_width = font.MeasureString(text).Width
text_height = font.MeasureString(text).Height

5. 遍歷每一頁

現在,我們將循環遍歷 PDF 文件的每一頁,並在每頁上添加水印。

# 循環遍歷文檔中的每一頁
for i inrange(doc.Pages.Count):
# 獲取當前頁面
    page = doc.Pages.get_Item(i)

	# 保存當前畫布狀態
    state = page.Canvas.Save()
    
	# 計算頁面的中心座標
    x = page.Canvas.Size.Width / 2
    y = page.Canvas.Size.Height / 2

	# 將座標系平移到中心,使頁面的中心成為原點(0, 0)
    page.Canvas.TranslateTransform(x, y)

	# 將畫布逆時針旋轉45度以顯示水印
    page.Canvas.RotateTransform(-45.0)

	# 設置水印的透明度
    page.Canvas.SetTransparency(0.4)
    
	# 使用負偏移量在中心位置繪製水印文本
    page.Canvas.DrawString(text, font, PdfBrushes.get_Blue(), PointF(-text_width / 2, -text_height / 2))
    
	# 恢復畫布狀態,以防止變換影響後續繪圖
    page.Canvas.Restore(state)

在上述代碼中,我們使用了以下步驟:

  • 獲取當前頁面,保存畫布狀態。
  • 計算頁面的中心座標,並將座標系平移到中心。
  • 旋轉畫布以逆時針顯示水印。
  • 設置透明度,使得水印不太顯眼。
  • 將水印文本繪製到頁面中心。
  • 恢復畫布狀態,保證之後的操作不受影響。

6. 保存修改後的 PDF

最後,我們將修改後的 PDF 文檔保存到新的文件中:

# 將修改後的文檔保存到新的PDF文件
doc.SaveToFile("output/TextWatermark.pdf")
doc.Dispose()

這裏,我們指定了新的輸出文件路徑,確保保存成功。

三、總結

通過上述步驟,我們成功地使用 Python 為 PDF 文件添加了水印。這種方法簡單有效,適用於需要保護文檔內容的場合。

在實際應用中,水印的樣式和內容可以根據需要靈活調整。無論是企業文檔、個人作品,還是僅僅為了防止未經授權的複製,通過水印都能夠更好地保護你的知識產權。

如果你對 PDF 操作有更多的需求,Spire.PDF 還支持其他許多功能,比如合併、拆分 PDF 文檔,提取文本和圖像等。希望本文能為你在使用 Python 操作 PDF 提供一些實用的參考。