[英]How to save digital signature image or its byte[] in to database using itextsharp?
我正在使用pdf表單,它包含一個數字簽名字段。 當我們單擊數字簽名字段時,它要求選擇一個有效的簽名,然后要求保存文件。 我的要求是根據用戶ID將數字簽名保存到db。 我在pdf表單中有一個按鈕,當我們單擊該按鈕時,它將重定向到處理程序文件。 該處理程序類以httpcontext形式獲取數據。 在這種情況下,提交按鈕后,除數字簽名字段外,所有其他字段數據均到達處理程序。
有什么方法可以將數字簽名數據讀取到處理程序?
提前致謝。
首先,
該處理程序類以httpcontext形式獲取數據。 在這種情況下,提交按鈕后,除數字簽名字段外,所有其他字段數據均到達處理程序。
聽起來您的PDF表單提交操作已設置ExportFormat標志。 在這種情況下, 不會發送數字簽名。 您要么必須設置SubmitPDF標志, 否則將導致提交包含所有更改的整個文檔,或者這兩個標志均未設置(導致提交FDF),而是設置了IncludeAppendSaves標志,這將導致已提交的FDF文件包括內容。基礎PDF文檔的所有增量更新。
在服務器端,需要完整的PDF才能繼續使用iText高級方法,對於完全符合您要求的SubmitPDF ,對於IncludeAppendSaves,您必須將原始PDF與增量更新結合起來。
現在您可以提取簽名數據。
當您使用名稱iTextSharp和itext標記時,我假設您使用的是5.5.x版本,而不是用於.Net的7.x版本。
只要有PDF,就可以使用用於讀取文件的PdfReader
的AcroFields
屬性的GetSignatureNames()
方法確定其簽名的簽名字段:
PdfReader reader = new PdfReader(path);
AcroFields fields = reader.AcroFields;
List<String> names = fields.GetSignatureNames();
對於每個此類字段,您都可以從該字段的簽名字典的Contents條目中檢索實際的簽名字節:
byte[] signatureBytes = fields.GetSignatureDictionary(name).GetAsString(PdfName.CONTENTS).GetOriginalBytes();
在可互操作的ISO 32000-1或PAdES / ISO 32000-2簽名的情況下,這些字節將包含相當裸露的PKCS#1簽名結構或CMS簽名容器。 為了真正理解這些結構,通常還需要簽名字典中的其他信息。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.