Python如何快速在PDF中添加文字或者圖片水印
在 PDF 文件中添加水印,是保護文檔內(nèi)容的一種常見方式。無論是為文件加上公司 Logo、版權(quán)聲明,還是保密標識,水印都能有效標注內(nèi)容歸屬,并提醒讀者注意文檔的機密性。不過,手動添加水印往往既費時又繁瑣。幸運的是,在今天的教程中,你將學(xué)習(xí)如何使用 Python 快速為 PDF 添加文字或圖片水印,讓這一切變得簡單高效!
在本篇教程中,我們使用 Spire.PDF for Python 來演示。這是一個專業(yè)的 PDF 庫,可以幫助開發(fā)者高效處理 PDF 相關(guān)的各種任務(wù)。該組件還為小型項目提供了免費版,你可以導(dǎo)航到官網(wǎng)進行下載。
使用 Python 在 PDF 中添加文字水印
一般來說,水印分為文字和圖片兩種,文字水印多為()類的信息,可以有效....。在 Spire.PDF 中,我們主要使用 Canvas.DrawString() 方法來繪制,通過該方法你可以在 PDF 頁面上的指定位置添加任意文本水印。下面是詳細的代碼步驟和代碼示例。
一般來說,PDF 水印分為文字水印和圖片水印兩種。文字水印通常用于標注文檔屬性或版權(quán)信息,例如“內(nèi)部資料”“版權(quán)所有”等,不僅能起到警示作用,還能有效防止文件被未經(jīng)授權(quán)使用。在 Spire.PDF 中,我們可以通過 Canvas.DrawString() 方法在 PDF 頁面上的指定位置繪制文字,實現(xiàn)靈活的文本水印效果。接下來我們看看具體的實現(xiàn)步驟和示例代碼。
在 PDF 中添加文字水印的步驟:
- 創(chuàng)建一個 PdfDocument 類的對象,并加載 PDF 文件。
- 創(chuàng)建 PdfTrueTypeFont 實例。
- 自定義水印的文本,并指定水印的位置。
- 遍歷所有 PDF 頁面。
- 獲取當前頁面。
- 通過 PdfPageBase.Canvas.SetTransparency() 方法設(shè)置水印透明度。
- 使用 PdfPageBase.Canvas.TranslateTransform() 方法將頁面坐標系平移到指定位置,并使用 PdfPageBase.Canvas.RotateTransform() 方法將坐標系逆時針旋轉(zhuǎn)45度,從而使水印位于頁面中央且逆時針傾斜45度。
- 使用 PdfPageBase.Canvas.DrawString() 方法在頁面上繪制水印文本。
- 將修改后的 PDF 保存為新的文檔。
下方的代碼展示了怎樣在 PDF 文件中添加“禁止復(fù)制”的文本水?。?/p>
from spire.pdf import *
from spire.pdf.common import *
import math
# 創(chuàng)建PdfDocument類的對象
pdf = PdfDocument()
# 加載PDF文檔
pdf.LoadFromFile("/input/示例文檔.pdf")
# 創(chuàng)建PdfTrueTypeFont類的對象
font = PdfTrueTypeFont("KaiTi", 48.0, 0, True)
# 指定水印文本并計算水印位置
text = "禁止復(fù)制"
set1 = float (font.MeasureString(text).Width * math.sqrt(2) / 4)
set2 = float (font.MeasureString(text).Height * math.sqrt(2) / 4)
# 遍歷文檔中的頁面
for i in range(pdf.Pages.Count):
# 獲取頁面
page = pdf.Pages.get_Item(i)
# 設(shè)置水印的透明度
page.Canvas.SetTransparency(0.5)
# 將頁面坐標系平移至指定位置
page.Canvas.TranslateTransform(page.Canvas.Size.Width / 2 - set1 - set2,
page.Canvas.Size.Height / 2 + set1 - set2)
# 逆時針旋轉(zhuǎn)坐標系45度
page.Canvas.RotateTransform(-45.0)
# 在頁面上繪制水印
page.Canvas.DrawString(text, font, PdfBrushes.get_BlueViolet(), 0.0, 0.0)
# 保存文檔
pdf.SaveToFile("/output/文本水印.pdf")
pdf.Close()
添加文本水印后的 PDF 文件預(yù)覽:

通過 Python 在 PDF 中添加圖片水印
圖片水印在實際工作中的應(yīng)用十分廣泛,比如在報告、發(fā)票或合同中加入公司 Logo、水印背景圖或簽章圖像,不僅能提升文檔的專業(yè)度,還能起到防偽與品牌識別的作用。在 Spire.PDF 中,同樣可以通過 Canvas 類來實現(xiàn)這一功能。不同于繪制文字水印,這里我們將使用 DrawImage() 方法,將圖片精確地添加到 PDF 頁面中。下面就讓我們看看具體的代碼實現(xiàn),了解圖片水印是如何被靈活嵌入到 PDF 中的。
在 Python 中添加圖片水印的步驟:
- 創(chuàng)建一個 PdfDocument 類的對象,并加載 PDF 文件。
- 通過 PdfImage.FromFile() 方法加載水印圖片,然后獲取該圖片的寬度和高度。
- 遍歷 PDF 中的每一頁。
- 獲取當前頁面。
- 使用 PdfPageBase.Canvas.SetTransparency() 方法設(shè)置水印的透明度。
- 使用 PdfPageBase.Canvas.DrawImage() 方法在頁面中央繪制水印圖像。
- 保存修改后的 PDF 文件。
下方是實現(xiàn)在 PDF 中添加圖片水印的完整代碼:
from spire.pdf import *
from spire.pdf.common import *
# 創(chuàng)建 PdfDocument 類的對象
pdf = PdfDocument()
# 加載 PDF 文檔
pdf.LoadFromFile("/input/示例文檔.pdf")
# 加載水印圖像
image = PdfImage.FromFile("\禁止.png")
# 獲取圖像的寬度和高度
imageWidth = float(image.Width)
imageHeight = float(image.Height)
# 循環(huán)遍歷文檔中的頁面
for i in range(pdf.Pages.Count):
# 獲取頁面
page = pdf.Pages.get_Item(i)
# 設(shè)置水印的透明度
page.Canvas.SetTransparency(0.3)
# 獲取頁面的寬度和高度
pageWidth = page.ActualSize.Width
pageHeight = page.ActualSize.Height
# 在頁面上繪制水印圖像
page.Canvas.DrawImage(image, pageWidth/2 - imageWidth/2, pageHeight/2 - imageHeight/2, imageWidth, imageHeight)
# 保存文檔
pdf.SaveToFile("/output/圖像水印.pdf")
pdf.Close()
添加圖片水印的 PDF 文件預(yù)覽:

常見問題與解決辦法
問題 1:添加水印后,PDF 文件體積明顯增大?
解決辦法: 如果使用的是高分辨率圖片作為水印,文件體積可能會增加。建議在添加前適當壓縮圖片大小,或使用矢量格式的 Logo,以減少文件占用。
問題 2:水印位置不正確或超出頁面范圍?
解決辦法: 檢查繪制水印時設(shè)置的坐標參數(shù),確保其位于頁面的有效區(qū)域內(nèi)。可以通過 PdfPageBase.GetClientSize() 方法獲取頁面寬高,根據(jù)尺寸動態(tài)計算合適的水印位置。
問題 3:水印內(nèi)容太明顯,遮擋了正文?
解決辦法: 調(diào)整文字水印的透明度或顏色,使其更柔和。對于圖片水印,可設(shè)置較低的不透明度值(如 0.2~0.4),既能標示信息,又不影響閱讀。
問題 4:多頁 PDF 只顯示了部分頁面的水???
**解決辦法: **請確保在循環(huán)中為每一頁都調(diào)用了繪制方法。可通過遍歷 PDF 中的頁面,在每頁的 Canvas 上分別繪制水印,以保證整個文檔的一致性。
問題 5:生成的 PDF 打不開或顯示異常?
**解決辦法: **這通常是由于文件未正確保存或在寫入時被占用造成的。請確認保存路徑有效,且在保存之前關(guān)閉其他占用該文件的程序。
總結(jié)
通過以上方法,我們可以輕松地在 PDF 文件中添加文字或圖片水印,無論是用于版權(quán)保護、信息標識,還是提升文件的專業(yè)性。借助 Spire.PDF for Python,你無需繁瑣操作,就能高效實現(xiàn)各種水印效果,讓文檔管理更加安全、便捷。
到此這篇關(guān)于Python如何快速在PDF中添加文字或者圖片水印的文章就介紹到這了,更多相關(guān)Python PDF添加水印內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
python數(shù)學(xué)建模之Numpy?應(yīng)用介紹與Pandas學(xué)習(xí)
這篇文章主要介紹了python數(shù)學(xué)建模之Numpy?應(yīng)用介紹與Pandas學(xué)習(xí),NumPy?是一個運行速度非??斓臄?shù)學(xué)庫,一個開源的的python科學(xué)計算庫,主要用于數(shù)組、矩陣計算2022-07-07
關(guān)于Python3的import問題(pycharm可以運行命令行import錯誤)
這篇文章主要介紹了關(guān)于Python3的import問題(pycharm可以運行命令行import錯誤),文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-11-11
Python深度學(xué)習(xí)pytorch神經(jīng)網(wǎng)絡(luò)Dropout應(yīng)用詳解解
這篇文章主要為大家介紹了Python深度學(xué)習(xí)中關(guān)于pytorch神經(jīng)網(wǎng)絡(luò)Dropout的應(yīng)用詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步2021-10-10
Python入門_學(xué)會創(chuàng)建并調(diào)用函數(shù)的方法
下面小編就為大家?guī)硪黄狿ython入門_學(xué)會創(chuàng)建并調(diào)用函數(shù)的方法。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-05-05

