4

我有一个 pdf/a 兼容文件(我使用 acrobat 进行预检,但没有发现任何问题)。然后,我使用 pdfAStamper 使用 itextsharp 对文件进行签名。关于 pdfa 合规性,itext 中的签名过程有两种可能的结果。

  1. 如果签名不可见,则 pdf 保持 pdfa 兼容:

    stamper = PdfAStamper.CreateSignature(reader, os, '\0'); PdfSignatureAppearance appearance = stamper.SignatureAppearance; appearance.Reason = cerReason; appearance.Location = cerLocation; IExternalSignature pks = new PrivateKeySignature(pk, digestAlgorithm); MakeSignature.SignDetached(appearance, pks, chain, crlList, ocspClient, tsaClient, estimatedSize, subfilter);

  2. 如果我在 Bruno Lowagie 的论文 ch 2.4.2 中添加可见签名,则预检检查报告: 子集字体中的 CIDset 不完整

已添加的字体报错:

BaseFont bfA = BaseFont.CreateFont(fntPath, BaseFont.IDENTITY_H, true);

完整的代码看起来像

stamper = PdfAStamper.CreateSignature(reader, os, '\0');
PdfSignatureAppearance appearance = stamper.SignatureAppearance;
appearance.Reason = cerReason;
appearance.Location = cerLocation;
BaseFont bfA = BaseFont.CreateFont(fntPath, BaseFont.IDENTITY_H, true);
appearance.SetVisibleSignature(new Rectangle(50, 100, 400, 200), nP, "Signature");
appearance.Layer2Font = new Font(bfA, 12);
appearance.Layer2Text = cerL2Text + DateTime.Now;
appearance.SignatureRenderingMode = PdfSignatureAppearance.RenderingMode.GRAPHIC_AND_DESCRIPTION;
appearance.SignatureGraphic = Image.GetInstance(staPath);
IExternalSignature pks = new PrivateKeySignature(pk, digestAlgorithm);
MakeSignature.SignDetached(appearance, pks, chain, crlList, ocspClient, tsaClient, estimatedSize, subfilter);

最终的问题是如何使后一个示例生成符合 pdfa 的文件,即。如何消除子集字体中的 CIDset 不完整错误?

4

0 回答 0