Ошибка добавления второй цифровой подписи в PDF в «PDFsharp» - PullRequest
0 голосов
/ 07 февраля 2019

Я использовал определенный запрос на получение из библиотеки PDFsharp, чтобы добавить цифровую подпись в PDF с помощью PDFsharp.Он отлично работает, если это неподписанный документ.

Когда я пытаюсь добавить вторую подпись к уже подписанному PDF, появляется сообщение об ошибке «/ sigflags».
Возможно ли добавитьна "/ sigflags"?Вместо того, чтобы пытаться добавить это?

 private void AddSignatureComponents(object sender, EventArgs e)
 {
      var catalog = Document.Catalog;
      if (catalog.AcroForm == null)
         catalog.AcroForm = new PdfAcroForm(Document);
         catalog.AcroForm.Elements.Add(PdfAcroForm.Keys.SigFlags, new PdfInteger(3));

         var signature = new PdfSignatureField(Document);
         var paddedContents = new PdfString("", PdfStringFlags.HexLiteral, maximumSignatureLength.Value);
         var paddedRange = new PdfArray(Document, byteRangePaddingLength, new PdfInteger(0), new PdfInteger(0), new PdfInteger(0), new PdfInteger(0));
         signature.Contents = paddedContents;
         signature.ByteRange = paddedRange;
         signature.Reason = Options.Reason;
         signature.Location = Options.Location;
         signature.Rectangle = new PdfRectangle(Options.Rectangle);
         signature.AppearanceHandler = Options.AppearanceHandler ?? new DefaultAppearanceHandler()
         {
                Location = Options.Location,
                Reason = Options.Reason,
                Signer = Certificate.GetNameInfo(X509NameType.SimpleName, false)
         };
         signature.PrepareForSave();
         this.contentsTraker = new PositionTracker(paddedContents);
         this.rangeTracker = new PositionTracker(paddedRange);
         foreach (var pagenumber in Options.PageNumber)
         {
            var index = pagenumber - 1;

            if (!Document.Pages[index].Elements.ContainsKey(PdfPage.Keys.Annots))
                Document.Pages[index].Elements.Add(PdfPage.Keys.Annots, new PdfArray(Document));
                try
                {
                    (Document.Pages[index].Elements[PdfPage.Keys.Annots] as PdfArray).Elements.Add(signature);
                }
                catch
                {
                    if (Document.Pages[index].Elements.ContainsKey(PdfPage.Keys.Annots))
                    {
                        Document.Pages[index].Elements.Remove(PdfPage.Keys.Annots);
                        Document.Pages[index].Elements.Add(PdfPage.Keys.Annots, new PdfArray(Document));
                    }
                    (Document.Pages[index].Elements[PdfPage.Keys.Annots] as PdfArray).Elements.Add(signature);
                }
            }
            catalog.AcroForm.Fields.Elements.Add(signature);
    }
...