protected override void DoProcessPdf(Job job) { var profile = job.Profile; string preProcessFile = null; Secure pdf = null; try { var pdfFile = job.TempOutputFiles.First(); preProcessFile = MoveFileToPreProcessFile(pdfFile, "PreProcess"); //CertRegistrar may only be desposed after encryption using (var certRegistrar = new CertificateRegistrar(profile.PdfSettings.Signature, job.Passwords.PdfSignaturePassword)) { var backgroundAdder = new BackgroundAdder(this); backgroundAdder.AddBackground(preProcessFile, profile); var pdfAConverter = new PdfAConverter(this); pdfAConverter.ConvertToPdfA(preProcessFile, profile); pdf = new Secure(); pdf.Open(preProcessFile, ""); AssemblyHelper assemblyHelper = new AssemblyHelper(); pdf.SetInfoEntry("Producer", "PDFCreator " + assemblyHelper.GetPdfforgeAssemblyVersion()); //Bug in PDF Tools, Linearize breaks encryption //pdf.Linearize = true; var signer = new Signer(); var success = signer.SignPdfFile(pdf, profile, certRegistrar.Certificate); if (success) { var encrypter = new Encrypter(); success = encrypter.SaveEncryptedFileAs(pdf, profile, job.Passwords, pdfFile); } if (!success) { Validate(pdf); } pdf.Close(); } } finally { pdf?.Close(); //delete preprocess file if (!string.IsNullOrEmpty(preProcessFile)) { if (File.Exists(preProcessFile)) { File.Delete(preProcessFile); } } } }