private static bool SignFile(string file, PKCertificateWithKey certWithKey, PadesPolicySpec policy, PadesVisualRepresentation2 visual, Metadata metadata, string outputDir, string outputName = null) { var documentoToSign = File.ReadAllBytes(file); if (metadata != null) { using (var buffer = new MemoryStream()) { using (var stream = new MemoryStream(documentoToSign)) { DoConvertToPdfA(stream, metadata, buffer); } documentoToSign = buffer.ToArray(); } } var signer = new PadesSigner(); signer.SetSigningCertificate(certWithKey); signer.SetPdfToSign(documentoToSign); signer.SetPolicy(policy); signer.SetVisualRepresentation(visual); signer.SetCertificateValidationConfigurator(ConfigureNoValidation); if (string.IsNullOrWhiteSpace(outputName)) { outputName = Path.GetFileName(file); } try { signer.ComputeSignature(); var signed = signer.GetPadesSignature(); File.WriteAllBytes(Path.Combine(outputDir, outputName), signed); } catch (Exception exception) { Log(exception.ToString(), file); return(false); } return(true); }