Python實(shí)現(xiàn)在PDF中插入單圖像水印和平鋪圖像水印
前言
PDF文檔因其跨平臺(tái)兼容性和內(nèi)容保真度成為信息交換的標(biāo)準(zhǔn)載體,為應(yīng)對(duì)版權(quán)侵犯、內(nèi)容篡改以及未經(jīng)授權(quán)的傳播等風(fēng)險(xiǎn),向PDF中插入圖片水印成為一種強(qiáng)化文檔安全性、彰顯所有權(quán)及實(shí)施訪問控制的有效手段。圖片水印不僅能以直觀的方式標(biāo)示文檔來源、強(qiáng)化版權(quán)意識(shí),還能通過獨(dú)特設(shè)計(jì)防范非法復(fù)制與擴(kuò)散。利用Python,我們可以批量在PDF文檔中插入圖片水印。本篇將詳解如何運(yùn)用Python實(shí)現(xiàn)PDF文檔中圖片水印的添加,助力用戶提升PDF文檔保護(hù)與智能化水平。
- 用Python在PDF文檔中插入單式圖片水印
- 用Python在PDF文檔中插入重復(fù)圖片水印
本文所使用的方法需要Spire.PDF for Python,PyPI: pip install Spire.PDF。
用Python在PDF文檔中插入單式圖片水印
單圖像水印是 PDF 頁面中心的透明圖像。我們可以使用庫中的 API 在任意 PDF 頁面上繪制指定圖像作為水印。具體步驟如下:
1.導(dǎo)入所需模塊。
2.創(chuàng)建一個(gè) PdfDocument 類對(duì)象。
3.使用 PdfDocument.LoadFromFile() 方法加載 PDF 文檔。
4.使用 PdfImage.FromFile() 方法加載水印圖像。
5.循環(huán)瀏覽文檔中的頁面以添加水印。
- 使用 PdfDocument.Pages.get_Item() 方法獲取頁面。
- 使用 PdfPageBase.Canvas.SetTransparency() 方法設(shè)置水印的透明度。
- 使用 PdfPageBase.Canvas.DrawImage() 方法在頁面中央繪制水印圖像。
6.使用 PdfDocument.SaveToFile() 方法保存文檔。
7.釋放資源。
代碼示例:
from spire.pdf import *
from spire.pdf.common import *
# 創(chuàng)建 PdfDocument 類對(duì)象
pdf = PdfDocument()
# 加載 PDF 文檔
pdf.LoadFromFile("示例.pdf")
# 加載水印圖像
image = PdfImage.FromFile("Marker.png")
# 獲取圖像的寬度和高度
imageWidth = float(image.Width)
imageHeight = float(image.Height)
# 遍歷文檔中的每一頁
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")
pdf.Close()
結(jié)果文檔:

用Python在PDF文檔中插入重復(fù)圖片水印
重復(fù)圖像水印是在 PDF 頁面上定期重復(fù)的圖像。在 PDF 頁面上繪制重復(fù)圖像水印需要使用庫中的 PdfTillingBrush 類。以下是詳細(xì)步驟:
1.導(dǎo)入所需模塊。
2.創(chuàng)建一個(gè) PdfDocument 類對(duì)象。
3.使用 PdfDocument.LoadFromFile() 方法加載 PDF 文檔。
4.使用 PdfImage.FromFile() 方法加載水印圖像。
5.循環(huán)瀏覽文檔中的頁面以添加水印。
- 使用 PdfDocument.Pages.get_Item() 方法獲取頁面。
- 創(chuàng)建一個(gè) PdfTilingBrush 類對(duì)象,并設(shè)置其大小以確定水印的重復(fù)次數(shù)。
- 使用 PdfTillingBrush.Graphics.SetTransparency() 方法設(shè)置水印的透明度。
- 使用 PdfTillingBrush.Graphics.TranslateTransform() 方法將坐標(biāo)系平移到指定位置,使水印顯示在每次重復(fù)的中心。
- 使用 PdfTillingBrush.Graphics.DrawImage() 方法在耕作刷上繪制水印圖像。
- 使用 PdfPageBase.Canvas.DrawRectangle() 方法在頁面上繪制水印。
6.使用 PdfDocument.SaveToFile() 方法保存文檔。
7.釋放資源。
代碼示例:
from spire.pdf.common import *
from spire.pdf import *
# 創(chuàng)建 PdfDocument 類對(duì)象
pdf = PdfDocument()
# 加載 PDF 文檔
pdf.LoadFromFile("示例.pdf")
# 加載水印圖像
image = PdfImage.FromFile("Marker.png")
# 遍歷文檔中的每一頁
for i in range(pdf.Pages.Count):
# 獲取一頁
page = pdf.Pages.get_Item(i)
# 創(chuàng)建 PdfTilingBrush 類對(duì)象并設(shè)置其大小
brush = PdfTilingBrush(SizeF(page.Canvas.Size.Width / float(3), page.Canvas.Size.Height / float(3)))
# 設(shè)置水印的透明度
brush.Graphics.SetTransparency(0.3)
brush.Graphics.Save()
# 將坐標(biāo)平移至指定位置
brush.Graphics.TranslateTransform(brush.Size.Width/2 - image.Width/2, brush.Size.Height/2 - image.Height/2)
# 在刷子上繪制水印圖像
brush.Graphics.DrawImage(image, 0.0, 0.0, float(image.Width), float(image.Height))
brush.Graphics.Restore()
# 在頁面上繪制水印
page.Canvas.DrawRectangle(brush, RectangleF(PointF(0.0, 0.0), page.Canvas.Size))
# 保存 PDF 文檔
pdf.SaveToFile("output/PDF重復(fù)圖像水印.pdf", FileFormat.PDF)
pdf.Close()
結(jié)果文檔:

到此這篇關(guān)于Python實(shí)現(xiàn)在PDF中插入單圖像水印和平鋪圖像水印的文章就介紹到這了,更多相關(guān)Python PDF插入水印內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
python文件無法作為模塊被導(dǎo)入的原因分析及解決過程
文章介紹了在命令行中運(yùn)行Python腳本時(shí),如果引用了自己寫的模塊但找不到該模塊的解決方法,方法包括臨時(shí)添加項(xiàng)目路徑到PYTHONPATH(通過命令行或環(huán)境變量)和永久添加(通過修改.bashrc文件或使用WinSCP工具)2025-12-12
python網(wǎng)絡(luò)編程實(shí)例簡(jiǎn)析
這篇文章主要介紹了python網(wǎng)絡(luò)編程,有不錯(cuò)的借鑒價(jià)值,需要的朋友可以參考下2014-09-09
Jupyter notebook 輸出部分顯示不全的解決方案
這篇文章主要介紹了Jupyter notebook 輸出部分顯示不全的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2021-04-04
使用Python構(gòu)建一個(gè)高效的結(jié)構(gòu)化日志系統(tǒng)
這篇文章主要為大家詳細(xì)介紹了如何使用Python構(gòu)建一個(gè)高效的結(jié)構(gòu)化日志系統(tǒng),可以解決傳統(tǒng)print日志的痛點(diǎn),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2026-03-03
利用pipenv和pyenv管理多個(gè)相互獨(dú)立的Python虛擬開發(fā)環(huán)境
這篇文章主要介紹了利用pipenv和pyenv管理多個(gè)相互獨(dú)立的Python虛擬開發(fā)環(huán)境,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-11-11
python使用tornado實(shí)現(xiàn)簡(jiǎn)單爬蟲
這篇文章主要為大家詳細(xì)介紹了python使用tornado實(shí)現(xiàn)簡(jiǎn)單爬蟲,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-07-07
python讀取txt文件并取其某一列數(shù)據(jù)的示例
今天小編就為大家分享一篇python讀取txt文件并取其某一列數(shù)據(jù)的示例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2019-02-02

