[英]Howto keep PDF-A when signing a document using IText SignDeferred
[英]PDF-A1a document not valid after signing with VisualRepresentation using IText
我使用 IText 7.15.0 對 PDF-A1a 文檔進行數字簽名。
除了數字簽名之外,我還在文檔中添加了視覺表示(圖像)。
PdfSignatureAppearance appearance = signer.GetSignatureAppearance();
appearance.SetPageNumber(1);
Rectangle pr = new Rectangle(10 + ImageOffset, 10 + ImageOffset, 100, 100 );
appearance.SetPageRect(pr);
byte[] image = System.IO.File.ReadAllBytes(VisualAppearance);
appearance.SetRenderingMode(PdfSignatureAppearance.RenderingMode.GRAPHIC);
ImageData imageData = ImageDataFactory.Create(image);
appearance.SetSignatureGraphic(imageData);
此代碼有效並且簽名有效。 但如果文檔是 PDF-A1a,它就不再是有效的 PDF-A1a。 只有當我添加視覺表示時它才會變得無效。 如果我只是應用沒有視覺表示的簽名,它仍然是有效的 PDF-A1a。
添加視覺表示時,其他 PDF-A 標准(如 A2a)仍然有效。
使用 foxit phantom 驗證 PDF-A1a 時,顯示以下消息:
存在透明的軟蒙版。 從 PDF 開始,支持 1.4 透明度。 一些基於 PDF 的 ISO 標准禁止使用透明度。
在添加視覺表示時,我需要做什么才能保持 PDF-A1a 有效?
正如 Foxit 已經告知的那樣,一些標准禁止在合格文件中使用透明度,特別是 ISO 19005-1 對 PDF/A-1 配置文件的一些規定,其中包括:
如果SMask鍵出現在ExtGState或XObject字典中,則其值應為None 。
(ISO 19005-1,第 6.4 節透明度)
但是,如果 iText 將具有透明度信息的圖像添加到 PDF,它將透明度信息轉換為結果圖像XObject的非消失SMASK條目。
為了防止這種情況,只需使用沒有透明度的圖像。
如果我使用 jpeg 而不是 png,則 PDF-A1a 仍然有效。
對於非矩形圖像輪廓,請考慮使用剪輯路徑。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.