Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using iText.Kernel.Pdf;
- using iText.Signatures;
- namespace pdf_isClosed
- {
- class Program
- {
- static void Main(string[] args)
- {
- if (args.Length > 0)
- {
- foreach (String SRC in args)
- {
- getCertificationLevel(SRC);
- }
- }
- else {
- getCertificationLevel(@"tryIt.pdf");
- }
- }
- static void getCertificationLevel( String SRC )
- {
- Console.WriteLine(SRC+Environment.NewLine);
- PdfReader reader = new PdfReader( SRC );
- PdfDocument doc = new PdfDocument( reader );
- SignatureUtil signUtil = new SignatureUtil(doc);
- if (signUtil.GetSignatureNames().Count == 0)
- {
- Console.WriteLine("There is no signature here.");
- }
- else
- {
- foreach (var sigName in signUtil.GetSignatureNames())
- {
- PdfSignature signature = signUtil.GetSignature(sigName);
- PdfDictionary dict = signUtil.GetSignatureDictionary(sigName); // https://stackoverflow.com/questions/58397100/itext7-c-sharp-check-pdf-was-locked-after-signature/58418033#58418033
- SignaturePermissions perms = new SignaturePermissions(dict, null); // https://kb.itextpdf.com/itext/digital-signatures-chapter-5#Digitalsignatures-chapter5-c5_02_signatureinfo
- Console.Write("\t" + sigName + "\n" +
- "\t" + signature.GetDate() + "\n" +
- "\t\t" + "IsCertification: " + perms.IsCertification() + "\n" +
- "\t\t" + "IsFillInAllowed: " + perms.IsFillInAllowed() + "\n" +
- "\t\t" + "IsAnnotationsAllowed: " + perms.IsAnnotationsAllowed() + "\n" +
- "\t\t" + "GetFieldLocks: "
- );
- if ( perms.GetFieldLocks().Count != 0 )
- foreach (SignaturePermissions.FieldLock Lock in perms.GetFieldLocks()) { Console.Write( Lock + " " ); }
- else
- Console.Write( "-" );
- Console.WriteLine("\n");
- /*
- //PdfSigner signer = new PdfSigner(doc); // 'PdfSigner' does not contain a constructor that takes 1 arguments
- //var signerProperties = signer.GetSignerProperties(); // what creates a connection between PdfReader, PdfDocument, PdfSigner, or SignerProperties...???
- SignerProperties sp = new SignerProperties();
- switch ( sp.GetCertificationLevel() ) // https://api.itextpdf.com/iText/dotnet/9.0.0/namespacei_text_1_1_signatures.html#a996a04f7ae83f1a18712632be0460318
- {
- case AccessPermissions.UNSPECIFIED: // 0
- Console.WriteLine("Unspecified access permissions value which makes signature 'approval' rather than 'certification'.");
- break;
- case AccessPermissions.NO_CHANGES_PERMITTED: // 1
- Console.WriteLine("Access permissions level 1 which indicates that no changes are permitted except for DSS and DTS creation.");
- break;
- case AccessPermissions.FORM_FIELDS_MODIFICATION: // 2
- Console.WriteLine("Access permissions level 2 which indicates that permitted changes, with addition to level 1, are: filling in forms, instantiating page templates, and signing. ");
- break;
- case AccessPermissions.ANNOTATION_MODIFICATION: // 3
- Console.WriteLine("Access permissions level 3 which indicates that permitted changes, with addition to level 2, are: annotation creation, deletion and modification. ");
- break;
- default :
- Console.WriteLine("WTF...?");
- break;
- } // switch
- */
- } // foreach
- } // if
- } // getCertificationLevel()
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement