2016-09-04 1 views

ответ

4

Я бы посоветовал взглянуть на официальные примеры.

Они содержат, например, пример «SignatureInfo», который выводит несколько информационных элементов на все подписи, встроенные в PDF; таким образом, они, в частности, определяют, подписан ли файл вообще.


Это вы используете iTextSharp 5.5.x, ваш основной код этого

public void InspectSignatures(String path) { 
    Console.WriteLine(path); 
    PdfReader reader = new PdfReader(path); 
    AcroFields fields = reader.AcroFields; 
    List<String> names = fields.GetSignatureNames(); 
    SignaturePermissions perms = null; 
    foreach (String name in names) { 
     Console.WriteLine("===== " + name + " ====="); 
     perms = InspectSignature(fields, name, perms); 
    } 
    Console.WriteLine(); 
} 

(на примере iTextSharp C5_02_SignatureInfo.cs)

Как вы видите, метод AcroFields.GetSignatureNames() получает вас имена всех подписанных полей подписи. Если этот список не пуст, PDF подписывается.


Если вы используете IText 7 для .Net, ваш основной код заключается в следующем:

public virtual void InspectSignatures(String path) 
{ 
    // System.out.println(path); 
    PdfDocument pdfDoc = new PdfDocument(new PdfReader(path)); 
    PdfAcroForm form = PdfAcroForm.GetAcroForm(pdfDoc, false); 
    SignaturePermissions perms = null; 
    SignatureUtil signUtil = new SignatureUtil(pdfDoc); 
    IList<String> names = signUtil.GetSignatureNames(); 
    foreach (String name in names) 
    { 
     System.Console.Out.WriteLine("===== " + name + " ====="); 
     perms = InspectSignature(pdfDoc, signUtil, form, name, perms); 
    } 
    System.Console.Out.WriteLine(); 
} 

(от IText 7, например .Net C5_02_SignatureInfo.cs)

Как вы видите , метод SignatureUtil.GetSignatureNames() получает имена всех подписанных полей подписи. Если этот список не пуст, PDF подписывается.


Кстати, как вы не указали дальше, я предполагаю, что вы имеете в виду регулярные комплексные подписи PDF, в частности, ни обособленных подписей, ни подписей XFA.

+0

Это должно быть отмечено как решение! Это отлично работает для меня. –

+0

Вы (как человек, который спросил) - это тот, кто может это сделать: нажмите галочку в левом верхнем углу ответа. – mkl

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