4

pdf/a 準拠のファイルがあります (acrobat を使用してプリフライト チェックを行っていますが、問題は見つかりません)。次に、pdfAStamper を使用して、itextsharp でファイルに署名します。pdfa 準拠に関して、itext の署名プロセスには 2 つの結果が考えられます。

  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