Python實(shí)現(xiàn)在PDF中添加數(shù)字簽名
前言
在數(shù)字化時(shí)代,文件的安全性和可信度變得尤為重要。無(wú)論是商業(yè)文件、法律文件還是個(gè)人文件,都可能需要證明其來(lái)源的真實(shí)性和完整性。PDF數(shù)字簽名就是解決這些問(wèn)題的關(guān)鍵工具。PDF數(shù)字簽名不僅能夠確保文件的安全性,還能提高工作效率,減少紙質(zhì)文件處理,從而為企業(yè)和個(gè)人帶來(lái)巨大的便利和保障。本文將提供以下兩示例來(lái)介紹如何使用 Python 為PDF文檔添加數(shù)字簽名:
安裝所需Python 庫(kù)
Spire.PDF for Python 庫(kù)現(xiàn)已支持在PDF數(shù)字簽名,可以通過(guò)以下以下 pip 命令安裝該庫(kù):
pip install Spire.PDF
更新庫(kù)可以使用:
pip install --upgrade Spire.PDF
Python 在PDF中添加可見(jiàn)簽名
使用Spire.PDF for Python庫(kù)在PDF文檔中添加包含圖片和簽名細(xì)節(jié)信息的數(shù)字簽名的主要步驟如下:
1.加載PDF文檔。
2.創(chuàng)建 PdfOrdinarySignatureMaker 對(duì)象,并傳入PDF文檔, pfx 證書(shū)和證書(shū)密碼作為參數(shù)。
3.使用 PdfOrdinarySignatureMaker 類(lèi)的屬性設(shè)置簽名細(xì)節(jié),如簽名者姓名、聯(lián)系方式、地點(diǎn)和簽名原因。
4.為簽名創(chuàng)建一個(gè) PdfSignatureAppearance 實(shí)例,然后自定義簽名標(biāo)簽并設(shè)置簽名圖像。
5.使用 PdfDocument.Pages[] 屬性獲取PDF文檔中的特定頁(yè)面。
6.調(diào)用 PdfOrdinarySignatureMaker.MakeSignature(sigFieldName: str, page: PdfPageBase,x: float,y: float,width: float,height: float,signatureAppearance: IPdfSignatureAppearance) 方法將數(shù)字簽名添加到頁(yè)面的特定位置。
7.保存簽名后的PDF文檔。
Python 代碼:
from spire.pdf.common import * from spire.pdf import * # 加載PDF文檔 pdf = PdfDocument() pdf.LoadFromFile("考核.pdf") # 創(chuàng)建PdfOrdinarySignatureMaker對(duì)象 signatureMaker = PdfOrdinarySignatureMaker(pdf, "gary.pfx", "e-iceblue") # 設(shè)置簽名屬性 signature = signatureMaker.Signature signature.Name = "Gary" signature.ContactInfo = "+86 12345678" signature.Location = "China" signature.Reason = "Document creator" # 自定義可見(jiàn)簽名標(biāo)簽 appearance = PdfSignatureAppearance(signature) appearance.NameLabel = "Signer: " appearance.ContactInfoLabel = "Phone: " appearance.LocationLabel = "Location: " appearance.ReasonLabel = "Reason: " # 設(shè)置簽名圖片 appearance.SignatureImage = PdfImage.FromFile("C:\\Users\\Administrator\\Desktop\\簽名.jpg") appearance.SignImageLayout = SignImageLayout.Stretch # 將顯示模式設(shè)置為同時(shí)顯示圖片和簽名信息 appearance.GraphicMode = GraphicMode.SignImageAndSignDetail # 獲取PDF文檔第一頁(yè) page = pdf.Pages[0] # 將簽名添加到頁(yè)面的指定位置 signatureMaker.MakeSignature("Gary簽名", page, 150.0, 720.0, 260.0, 100.0, appearance) # 保存PDF文檔 pdf.SaveToFile("PDF可見(jiàn)簽名.pdf") pdf.Close()
Python 在PDF中添加不可見(jiàn)簽名
可見(jiàn)數(shù)字簽名會(huì)在文檔頁(yè)面上顯示簽名圖片或簽名細(xì)節(jié),因此有時(shí)可能會(huì)對(duì)文檔的外觀產(chǎn)生影響,而不可見(jiàn)簽名則能保持文檔的外觀整潔。在PDF中添加不可見(jiàn)簽名的步驟相對(duì)簡(jiǎn)單一些,具體如下:
1.加載PDF文檔。
2.創(chuàng)建 PdfOrdinarySignatureMaker 對(duì)象,并傳入PDF文檔, pfx 證書(shū)和證書(shū)密碼作為參數(shù)。
3.使用 PdfOrdinarySignatureMaker.MakeSignature(sigFieldName: str) 方法為PDF文檔添加不可見(jiàn)的數(shù)字簽名。
4.保存簽名后的PDF文檔。
Python 代碼:
from spire.pdf.common import * from spire.pdf import * # 加載PDF文檔 pdf = PdfDocument() pdf.LoadFromFile("考核.pdf") # 創(chuàng)建PdfOrdinarySignatureMaker對(duì)象 signatureMaker = PdfOrdinarySignatureMaker(pdf, "gary.pfx", "e-iceblue") # 在文檔中添加不可見(jiàn)簽名 signatureMaker.MakeSignature("Gary簽名") # 保存文檔 pdf.SaveToFile("PDF簽名.pdf") pdf.Close()
到此這篇關(guān)于Python實(shí)現(xiàn)在PDF中添加數(shù)字簽名的文章就介紹到這了,更多相關(guān)Python PDF添加數(shù)字簽名內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python對(duì)list列表進(jìn)行去重的幾種方法
python?列表就是我們js中的數(shù)組了,我們下文整理幾個(gè)常用的python?列表去重實(shí)現(xiàn)方法,非常的簡(jiǎn)單好用,通過(guò)代碼示例講解的非常詳細(xì),具有一定的參考價(jià)值,需要的朋友可以參考下2024-10-10Pygame實(shí)戰(zhàn)之檢測(cè)按鍵正確的小游戲
這篇文章主要為大家介紹了利用Pygame模塊實(shí)現(xiàn)的檢測(cè)按鍵正確的小游戲:每個(gè)字母有10秒的按鍵時(shí)間,如果按對(duì),則隨機(jī)產(chǎn)生新的字符,一共60s,如果時(shí)間到了,則游戲結(jié)束??靵?lái)跟隨小編一起學(xué)習(xí)一下吧2021-12-12Python爬蟲(chóng)之BeautifulSoup的基本使用教程
Beautiful Soup提供一些簡(jiǎn)單的、python式的函數(shù)用來(lái)處理導(dǎo)航、搜索、修改分析樹(shù)等功,下面這篇文章主要給大家介紹了關(guān)于Python爬蟲(chóng)之BeautifulSoup的基本使用教程,需要的朋友可以參考下2022-03-03python實(shí)現(xiàn)dnspod自動(dòng)更新dns解析的方法
這篇文章主要介紹了python實(shí)現(xiàn)的dnspod自動(dòng)更新dns解析的方法,需要的朋友可以參考下2014-02-02Python中比較特別的除法運(yùn)算和冪運(yùn)算介紹
這篇文章主要介紹了Python中比較特別的除法運(yùn)算和冪運(yùn)算介紹,“/”這個(gè)是除法運(yùn)算,那么這個(gè)“//”呢?“*”這個(gè)是乘法運(yùn)算,那么這個(gè)“**”呢?本文就講解這些運(yùn)算的不同,需要的朋友可以參考下2015-04-04python使用Random隨機(jī)生成列表的方法實(shí)例
在日常的生活工作和系統(tǒng)游戲等設(shè)計(jì)和制作時(shí),經(jīng)常會(huì)碰到產(chǎn)生隨機(jī)數(shù),用來(lái)解決問(wèn)題,下面這篇文章主要給大家介紹了關(guān)于python使用Random隨機(jī)生成列表的相關(guān)資料,需要的朋友可以參考下2022-04-04python 實(shí)現(xiàn)單通道轉(zhuǎn)3通道
今天小編就為大家分享一篇python 實(shí)現(xiàn)單通道轉(zhuǎn)3通道,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-12-12詳解python中Numpy的屬性與創(chuàng)建矩陣
這篇文章給大家分享了關(guān)于python中Numpy的屬性與創(chuàng)建矩陣的相關(guān)知識(shí)點(diǎn)內(nèi)容,有興趣的朋友們可以學(xué)習(xí)參考下。2018-09-09