2015-04-24 2 views
0

Я пытаюсь добавить цифровую подпись в пустой существующий pdf, а затем создать новый PDF с цифровой подписью.Ошибка Itextsharp «Неизвестный фильтр:» при закрытии штампа

Вот мой код:

FileStream fs = new FileStream(newFile, FileMode.Create, FileAccess.Write); 
PdfReader pdfreader = new PdfReader(pdf); 
PdfStamper stamper = PdfStamper.CreateSignature(pdfreader, fs, '\0'); 
stamper.Writer.CloseStream = false; 

StringBuilder sb = new StringBuilder(); 
sb.AppendLine("SIGNATURE"); 

PdfSignatureAppearance sap = stamper.SignatureAppearance; 
sap.SignDate = DateTime.Now; 
sap.Acro6Layers = true; 

Font signatureFont = new Font(); 
signatureFont.Size = 10; 

sap.Layer2Text = sb.ToString(); 
sap.Layer2Font = signatureFont; 

stamper.Close();  
pdfreader.Close(); 
fs.Close(); 

Там есть исключение, когда Стампер закрывается, и исключение говорит «Неизвестный фильтр:» может кто-нибудь помочь? Спасибо заранее.

ответ

0

Вы не говорите iTextSharp, как знак:

  • Вы не указываете к закрытому ключу для использования.
  • Вы не говорите, какую подпись PDF создать.

В вашем случае, скорее всего, последняя проблема вызывает сообщение об ошибке, вид PDF-подписи в основном определяется фильтром и значением субфильтра.

В старых версиях iText (Sharp) эти значения были параметрами метода PdfSignatureAppearance.SetCrypto и вызовом конструктора PdfSignature.

В текущих версиях эти значения устанавливаются внутри MakeSignature вспомогательных методов и ExternalSignature конструкторы реализации.

Возможно, вы захотите прочитать Digital Signatures for PDF documents, Белая книга от Bruno Lowagie (iText Software) на тему подписания PDF-файлов с использованием iText. Версия iTextSharp/C# примерного кода может быть найдена в репозитории исходных текстов iTextSharp.

Смежные вопросы