利用Python實(shí)現(xiàn)在PDF文檔中插入文字水印
前言
在傳播PDF文檔的過程中,如何有效地保護(hù)文檔的版權(quán)和所有權(quán),防止非法復(fù)制和濫用,成為了一個(gè)不可忽視的問題。為此,給PDF文檔添加水印便成了一種行之有效的保護(hù)手段。水印作為一種視覺上的標(biāo)識(shí),可以在不影響原文檔內(nèi)容閱讀的同時(shí),清晰地傳達(dá)出版權(quán)信息、擁有者身份、敏感性提示或其他重要聲明。在PDF文檔中插入文字水印,不僅可以醒目地標(biāo)記文檔的獨(dú)特性和所有權(quán),還可以起到震懾潛在的侵權(quán)行為,以及追蹤文檔源頭的作用。利用Python,我們可以方便快捷地實(shí)現(xiàn)對(duì)PDF文檔的水印插入操作。
本文將展示如何使用Python在PDF文檔中插入文字水印,實(shí)現(xiàn)高效的PDF文檔處理。
本文所使用的方法需要用到Spire.PDF for Python,PyPI:pip install Spire.PDF
。
用Python在PDF文檔中插入單文字水印
單文字水印是在頁(yè)面中央傾斜顯示的單行文本水印。以下是在 PDF 文檔中添加單文字水印的詳細(xì)步驟:
- 導(dǎo)入所需模塊。
- 創(chuàng)建一個(gè) PdfDocument 對(duì)象,并使用 PdfDocument.LoadFromFile() 方法加載一個(gè)PDF文檔。
- 創(chuàng)建字體對(duì)象。
- 指定水印文本并計(jì)算水印的位置。
- 循環(huán)瀏覽文檔中的頁(yè)面以添加水印。
- 使用 PdfDocument.Pages.get_Item() 方法獲取頁(yè)面。
- 使用 PdfPageBase.Canvas.SetTransparency() 方法設(shè)置透明度。
- 使用 PdfPageBase.Canvas.TranslateTransform() 方法將頁(yè)面坐標(biāo)系平移到指定位置,并使用 PdfPageBase.Canvas.RotateTransform() 方法將坐標(biāo)系逆時(shí)針旋轉(zhuǎn)45度,這樣水印就會(huì)在頁(yè)面中央逆時(shí)針傾斜45度。
- 使用 PdfPageBase.Canvas.DrawString() 方法在頁(yè)面上繪制水印文本。
- 使用 PdfDocument.SaveToFile() 方法保存文檔。
- 釋放資源。
代碼示例:
from spire.pdf import * from spire.pdf.common import * import math # 創(chuàng)建PdfDocument類的對(duì)象 pdf = PdfDocument() # 加載PDF文檔 pdf.LoadFromFile("示例.pdf") # 創(chuàng)建PdfTrueTypeFont類的對(duì)象 font = PdfTrueTypeFont("HarmonyOS Sans SC", 48.0, 0, True) # 指定水印文本并計(jì)算水印位置 text = "不得轉(zhuǎn)載" set1 = float (font.MeasureString(text).Width * math.sqrt(2) / 4) set2 = float (font.MeasureString(text).Height * math.sqrt(2) / 4) # 遍歷文檔中的頁(yè)面 for i in range(pdf.Pages.Count): # 獲取頁(yè)面 page = pdf.Pages.get_Item(i) # 設(shè)置水印的透明度 page.Canvas.SetTransparency(0.5) # 將頁(yè)面坐標(biāo)系平移至指定位置 page.Canvas.TranslateTransform(page.Canvas.Size.Width / 2 - set1 - set2, page.Canvas.Size.Height / 2 + set1 - set2) # 逆時(shí)針旋轉(zhuǎn)坐標(biāo)系45度 page.Canvas.RotateTransform(-45.0) # 在頁(yè)面上繪制水印 page.Canvas.DrawString(text, font, PdfBrushes.get_Cyan(), 0.0, 0.0) # 保存文檔 pdf.SaveToFile("output/單文字水印.pdf") pdf.Close()
結(jié)果文檔:
用Python在PDF文檔中插入多行文字水印
多行文字水印是在PDF頁(yè)面中多次重復(fù)的文字水印。以下是在PDF文檔中添加多行文字水印的操作步驟:
- 導(dǎo)入所需模塊。
- 創(chuàng)建 PdfDocument 對(duì)象,并使用 PdfDocument.LoadFromFile() 方法加載 PDF 文檔。
- 創(chuàng)建字體對(duì)象并指定水印文本。
- 循環(huán)瀏覽文檔中的頁(yè)面以添加水印。
- 使用 PdfDocument.Pages.get_Item() 方法獲取頁(yè)面。
- 創(chuàng)建一個(gè) PdfTillingBrush 對(duì)象并設(shè)置其大小。
- 使用 PdfTillingBrush.Graphics.SetTransparency() 方法設(shè)置透明度。
- 使用 PdfTillingBrush.Graphics.TranslateTransform() 方法將坐標(biāo)系平移到指定位置,并使用 PdfTillingBrush.Graphics.RotateTransform() 方法將坐標(biāo)系逆時(shí)針旋轉(zhuǎn)45度,這樣水印就會(huì)在每次重復(fù)的中心位置逆時(shí)針傾斜45度。
- 使用 PdfTillingBrush.Graphics.DrawString() 方法在耕作刷上繪制水印文本。
- 使用 PdfPageBase.Canvas.DrawRectangle() 方法在頁(yè)面上繪制水印。
- 使用 PdfDocument.SaveToFile() 方法保存文檔。
- 釋放資源。
代碼示例:
from spire.pdf.common import * from spire.pdf import * # 創(chuàng)建PdfDocument類對(duì)象 pdf = PdfDocument() # 加載PDF文檔 pdf.LoadFromFile("示例.pdf") # 創(chuàng)建PdfTrueTypeFont類對(duì)象 font = PdfTrueTypeFont("HarmonyOS Sans SC", 32.0, 0, True) # 指定水印文本 text = "XX科技" # 遍歷文檔的每一頁(yè) for i in range(pdf.Pages.Count): # 獲取一頁(yè) page = pdf.Pages.get_Item(i) # 創(chuàng)建PdfTilingBrush類對(duì)象 brush = PdfTilingBrush(SizeF(page.Canvas.ClientSize.Width / float(3), page.Canvas.ClientSize.Height / float(3))) # 設(shè)置水印的透明度 brush.Graphics.SetTransparency(0.3) brush.Graphics.Save() # 將畫刷的坐標(biāo)系平移到指定位置 brush.Graphics.TranslateTransform(brush.Size.Width / float(2), brush.Size.Height / float(2)) # 逆時(shí)針旋轉(zhuǎn)坐標(biāo)系45度 brush.Graphics.RotateTransform(-45.0) # 在畫刷上繪制水印文本 brush.Graphics.DrawString(text, font, PdfBrushes.get_Violet(), 0.0, 0.0, PdfStringFormat(PdfTextAlignment.Center)) brush.Graphics.Restore() brush.Graphics.SetTransparency(1.0) # 在頁(yè)面上繪制水印 page.Canvas.DrawRectangle(brush, RectangleF(PointF(0.0, 0.0), page.Canvas.ClientSize)) # 保存PDF文檔 pdf.SaveToFile("output/多行文字水印.pdf") pdf.Close()
結(jié)果文檔:
本文介紹了如何使用Python在PDF文檔中插入但文字水印和多行文字水印。
到此這篇關(guān)于利用Python實(shí)現(xiàn)在PDF文檔中插入文字水印的文章就介紹到這了,更多相關(guān)Python PDF文字水印內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
python?ocr簡(jiǎn)單示例之識(shí)別驗(yàn)證碼
OCR(Optical character recognition,光學(xué)字符識(shí)別)是一種將圖像中的手寫字或者印刷文本轉(zhuǎn)換為機(jī)器編碼文本的技術(shù),下面這篇文章主要給大家介紹了關(guān)于python?ocr簡(jiǎn)單示例之識(shí)別驗(yàn)證碼的相關(guān)資料,需要的朋友可以參考下2023-01-01Django model.py表單設(shè)置默認(rèn)值允許為空的操作
這篇文章主要介紹了Django model.py表單設(shè)置默認(rèn)值允許為空的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2020-05-05Python實(shí)現(xiàn)一個(gè)Git日志統(tǒng)計(jì)分析的小工具
這篇文章主要給大家介紹了關(guān)于利用Python如何實(shí)現(xiàn)一個(gè)Git日志統(tǒng)計(jì)分析小工具的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧。2017-12-12Python實(shí)現(xiàn)獲取前100組勾股數(shù)的方法示例
這篇文章主要介紹了Python實(shí)現(xiàn)獲取前100組勾股數(shù)的方法,涉及Python數(shù)值計(jì)算與判斷相關(guān)操作技巧,需要的朋友可以參考下2018-05-05Python Pydantic進(jìn)行數(shù)據(jù)驗(yàn)證的方法詳解
在 Python 中,有許多庫(kù)可用于數(shù)據(jù)驗(yàn)證和處理,其中一個(gè)流行的選擇是 Pydantic,下面就跟隨小編一起學(xué)習(xí)一下Pydantic 的基本概念和用法吧2024-01-01Python實(shí)現(xiàn)提取JSON數(shù)據(jù)中的鍵值對(duì)并保存為.csv文件
這篇文章主要為大家詳細(xì)介紹了如何基于Python實(shí)現(xiàn)讀取JSON文件數(shù)據(jù),并將JSON文件中指定的鍵值對(duì)數(shù)據(jù)轉(zhuǎn)換為.csv格式文件,感興趣的小伙伴可以了解下2023-09-09pytorch中使用cuda擴(kuò)展的實(shí)現(xiàn)示例
這篇文章主要介紹了pytorch中使用cuda擴(kuò)展的實(shí)現(xiàn)示例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-02-02