簡體   English   中英

使用 iText 簽名字段(數字簽名與電子簽名圖像) - 閱讀

[英]With iText Signature Fields (digital signature vs electronic signature image) - Reading

我試圖從文檔中讀取簽名,我看到 itext(和 adobe reader)的不同簽名類型。 我可以讀取帶有證書等的數字簽名。請參見下面的代碼。 但我也看到了一個可填寫的 PDF 中的簽名類型......看起來像是我認為只是電子簽名的圖像。 如何讀取簽名(或者可能是圖像)以提取簽名數據? 它會以圖像的形式出現,是否有任何與該簽名類型相關的元數據?

這是我嘗試過但顯示為空的代碼,

    AcroFields fields = reader.getAcroFields();
    ArrayList<String> names = fields.getSignatureNames();

一般來說

PDF 規范 ISO 32000-2 中指定的唯一類型的簽名是認證簽名、批准簽名、文檔時間戳和使用權限簽名。 使用權簽名只是與 Adobe Reader 溝通的一種方式,它應啟用某些通常不活動的功能; 它們不是由用戶創建或驗證為用戶簽名。 因此,讓我們忽略它們。

認證簽名、批准簽名和文檔時間戳存儲在 AcroForm 簽名字段中,您可以使用您的代碼檢索使用可互操作簽名填充(簽名)的簽名字段。

因此,您在查看 PDF 時識別的其他“簽名”是

  • 要么不可互操作,但至少根據規范簽名,
  • 或者它們甚至不是根據規范開始的簽名,
  • 或者您的 PDF 損壞,導致 iText 無法識別簽名。

在任何一種情況下,都沒有通用的方法來查找它們的簽名相關信息並對其進行解釋。 您必須分析 PDF 中低級數據的確切性質,甚至可能必須要求簽名的創建者提供足夠的信息(規格、解密材料……)才能進行分析。

在您的示例文件中

如果您共享的示例文件是混合的(正如我寫這篇文章時 Lonzak 已經解釋過的那樣):

  • 它有 6 個空(未簽名)簽名字段。

  • 它有兩個帶有塗鴉的位圖,大約位於兩個簽名表單域的區域中。

    截屏

因此,那些 bitmap 圖像不會填寫任何 AcroForm 表單字段。 實際上它們根本不代表任何動態內容,它們是 static 頁面內容的一部分。

盡管如此,根據您當地的法律,這些位圖可能被視為具有法律約束力(盡管很容易否認)的簽名。 因此,確實可能需要提取這些塗鴉,即使它們沒有填寫官方的 AcroForm 表單字段。

為此,您必須將圖像提取(帶坐標)應用於您的 PDF。 要確定哪個 bitmap 用於哪個原因,您可以將這些坐標與 6 個空簽名字段的坐標進行比較。

此外,用於添加這些塗鴉的 Adobe 軟件甚至還專門用自定義標簽標記了添加的內容:

/ADBE_FillSign BMC
q
0 Tc
0 Tw
0 g
0 G
1 w
/GS2 gs
/T1_0 1 Tf
/Fm0 Do
Q
EMC

因此,在自定義代碼中查找此類簽名圖像,您只需要查找在標記為ADBE_FillSign的內容中引用的圖像。 但是,顯然,這會將您的代碼限制為使用 Adobe 軟件添加的潦草簽名......

進一步的問題

在評論中,您提出了后續問題。

推薦的方法是什么,比如我們的“客戶”簽署文件以使用。 他們通常會使用 Mac Preview 或 Adobe Reader...進行簽名。 例如,他們應該使用“文本”簽名嗎?

這首先是一個法律問題; 您應該詢問您的法律部門或外部律師,在您的用例中哪些類型的電子簽名是可以的,哪些不是。 然后,您可以從您願意在您的軟件中支持的可接受的簽名類型中選擇 select,並要求您的客戶使用其中任何一個。

由於我沒有 Mac,因此我沒有使用 Mac Preview 的實踐經驗。 然而,它在過去幾年的許多問題中所扮演的角色表明,它不是一個非常忠實的觀眾。 因此,我不會在這里推薦它。 但也許它同時已經提高了實用性。

當前的 Adobe Reader 版本應該足夠忠實,值得推薦。 但是不要忘記清楚地描述如何使用它正確簽名。

另外,多人可以數字簽名嗎?

PDF 可互操作地支持串行數字簽名。 Ie the first signer signs the PDF and forwards the PDF with his signature to the next one who signs the PDF with already one signature and forwards it, etc. etc. until the last signer has signed and you have a PDF with signatures by all signers .

多個簽名者並行進行數字簽名是不可能互操作的。 即他們不能都簽署原始的、未簽名的 PDF 並期望他們的簽名可以以某種方式合並到一個 PDF 並填寫所有簽名。

一個經過驗證的簽名是什么樣的,我可以有多個嗎?

(只能驗證數字簽名,不能驗證任意簽名。因此,我假設您在這里指的是數字簽名。)

文檔中數字簽名的可視化效果如何,完全是自定義的,由簽名者決定。

Adobe Reader 在左側的“簽名”面板上顯示有關數字簽名的信息,例如像這樣(此屏幕截圖已本地化為意大利語;您更有可能看到英文版)

綠色復選標記和文字說明簽名的驗證狀態。

有一些方法可以構建數字簽名字段,以便 Adobe Reader 在文檔的簽名中顯示驗證復選標記,例如:

不過,您不應該為此使用 go 。 自十幾年前的 Adobe Acrobat 6 以來,這已被棄用,並且已被當前的 PDF 標准 ISO 32000-2 禁止。

文件內沒有“官方”簽名。 不過,那里有(未簽名的)簽名表單字段。 您可以在以下屏幕截圖中看到它們。 您可以通過左上角的紅色小箭頭識別它們。 其他的是文本字段。

在此處輸入圖像描述

您看到的所謂簽名只是在該字段上繪制的普通圖像。 這就是為什么你不能分析它們。 如果您真的要簽署簽名字段,那么您將能夠在之后進行分析,但不能分析那些繪制的簽名圖像。 我將其中一張圖片向上移動了一點,以向您展示它只是一幅畫……

在此處輸入圖像描述

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM