static void Main(string[] args) { // Create the pdf document //PDF4NET v5: PDFDocument doc = new PDFDocument(); PDFFixedDocument doc = new PDFFixedDocument(); // Create a blank page //PDF4NET v5: PDFPage page = doc.AddPage(); PDFPage page = doc.Pages.Add(); // Create the signature field. PDFSignatureField sign = new PDFSignatureField("Signature"); //PDF4NET v5: sign.Widgets[0].DisplayRectangle = new DisplayRectangle(50, 100, 200, 40); sign.Widgets[0].DisplayRectangle = new PDFDisplayRectangle(50, 100, 200, 40); // Create the digital signature. //PDF4NET v5: sign.Signature = new PDFDigitalSignature(); PDFCmsDigitalSignature ds = new PDFCmsDigitalSignature(); // The certificate is loaded from disk, but it also can be loaded from a certificate store. ds.Certificate = new X509Certificate2("..\\..\\..\\..\\..\\SupportFiles\\O2SolutionsDemoCertificate.pfx", "P@ssw0rd!", X509KeyStorageFlags.Exportable); ds.Location = "Romania"; ds.Reason = "For demo"; ds.ContactInfo = "*****@*****.**"; sign.Signature = ds; page.Fields.Add(sign); doc.Save("Sample_DigitalSign.pdf"); }
static void Main(string[] args) { string supportPath = "..\\..\\..\\..\\..\\SupportFiles\\"; PDFFixedDocument document = new PDFFixedDocument(supportPath + "PDF4NET.pdf"); PDFSignatureField signature1Field = document.Form.Fields["Signature1"] as PDFSignatureField; PDFComputedDigitalSignature signature1 = signature1Field.Signature as PDFComputedDigitalSignature; Asn1Object[] asn1Signature = signature1.DecodeSignature(); DumpSignature(asn1Signature[0], 0); }
/// <summary> /// Main method for running the sample. /// </summary> public static SampleOutputInfo[] Run(Stream formStream, SignatureTimestampNeeded onTimeStamp) { PDFFixedDocument document = new PDFFixedDocument(formStream); PDFSignatureField signField = document.Form.Fields["signhere"] as PDFSignatureField; signField.Signature = new PDFDocumentTimeStamp(); signField.Signature.TimestampDigestAlgorithm = PDFDigitalSignatureDigestAlgorithm.Sha256; signField.Signature.OnSignatureTimestampNeeded += onTimeStamp; SampleOutputInfo[] output = new SampleOutputInfo[] { new SampleOutputInfo(document, "documenttimestamp.pdf") }; return(output); }
static void Main(string[] args) { string supportPath = "..\\..\\..\\..\\..\\SupportFiles\\"; FileStream signedFile = File.OpenRead(supportPath + "PDF4NET.pdf"); PDFFixedDocument document = new PDFFixedDocument(signedFile); PDFSignatureField signature1Field = document.Form.Fields["Signature1"] as PDFSignatureField; PDFComputedDigitalSignature signature1 = signature1Field.Signature as PDFComputedDigitalSignature; FileStream signedCopy = File.Create("PDF4NET.Signature1.Copy.pdf"); signature1.SaveSignedCopy(signedFile, signedCopy); signedCopy.Flush(); signedCopy.Close(); Console.WriteLine("SignedCopy copy saved with success to current folder."); }
/// <summary> /// Main method for running the sample. /// </summary> public static SampleOutputInfo[] Run(Stream formStream, X509Certificate2 certificate) { PDFFixedDocument document = new PDFFixedDocument(formStream); PDFSignatureField signField = document.Form.Fields["signhere"] as PDFSignatureField; PDFCmsDigitalSignature signature = new PDFCmsDigitalSignature(); signature.SignatureDigestAlgorithm = PDFDigitalSignatureDigestAlgorithm.Sha256; signature.Certificate = certificate; signature.ContactInfo = "*****@*****.**"; signature.Location = "Cluj Napoca"; signature.Name = "O2 Solutions Support"; signature.Reason = "Simple signature"; signField.Signature = signature; SampleOutputInfo[] output = new SampleOutputInfo[] { new SampleOutputInfo(document, "simplesignature.pdf") }; return(output); }
/// <summary> /// Main method for running the sample. /// </summary> public static SampleOutputInfo[] Run(Stream formStream, X509Certificate2 certificate) { PDFFixedDocument document = new PDFFixedDocument(formStream); document.PDFVersion = PDFVersion.Version16; PDFSignatureField signField = document.Form.Fields["signhere"] as PDFSignatureField; PDFCmsDigitalSignature signature = new PDFCmsDigitalSignature(); signature.SignatureDigestAlgorithm = PDFDigitalSignatureDigestAlgorithm.Sha256; signature.Certificate = certificate; signature.ContactInfo = "*****@*****.**"; signature.Location = "Cluj Napoca"; signature.Name = "O2 Solutions Support"; signature.Reason = "Certifying signature"; signField.Signature = signature; // Certify the document with the signature included in the field. document.CertifyDocument(signField, PDFDigitalSignatureAllowedChanges.AllowFormFilling); SampleOutputInfo[] output = new SampleOutputInfo[] { new SampleOutputInfo(document, "certifyingsignature.pdf") }; return(output); }
/// <summary> /// Main method for running the sample. /// </summary> public static void Main(string[] args) { string supportPath = "..\\..\\..\\..\\..\\SupportFiles\\"; X509Certificate2 certificate = new X509Certificate2(supportPath + "O2SolutionsDemoCertificate.pfx", "P@ssw0rd!", X509KeyStorageFlags.Exportable); FileStream input = File.OpenRead(supportPath + "formfill.pdf"); PDFFixedDocument document = new PDFFixedDocument(input); input.Close(); // Sign the document PDFSignatureField signField = document.Form.Fields["signhere"] as PDFSignatureField; PDFCmsDigitalSignature signature = new PDFCmsDigitalSignature(); signature.SignatureDigestAlgorithm = PDFDigitalSignatureDigestAlgorithm.Sha256; signature.Certificate = certificate; signature.ContactInfo = "*****@*****.**"; signature.Location = "Cluj Napoca"; signature.Name = "O2 Solutions Support"; signature.Reason = "Simple signature"; signField.Signature = signature; // Load the signature image FileStream signatureImageStream = File.OpenRead(supportPath + "signature.png"); PDFPngImage signatureImage = new PDFPngImage(signatureImageStream); signatureImageStream.Close(); // Create the signature custom appearance PDFAnnotationAppearance aa = new PDFAnnotationAppearance(signField.Widgets[0].VisualRectangle.Width, signField.Widgets[0].VisualRectangle.Height); aa.Canvas.DrawImage(signatureImage, 0, 0, aa.Width, aa.Height); // Set the custom appearance on the signature field signField.Widgets[0].NormalAppearance = aa; using (FileStream output = File.Create("DigitalSignatureWithCustomAppearance.pdf")) { document.Save(output); } }
static void Main(string[] args) { string supportPath = "..\\..\\..\\..\\..\\SupportFiles\\"; FileStream signedFile = File.OpenRead(supportPath + "PDF4NET.pdf"); PDFFixedDocument document = new PDFFixedDocument(signedFile); PDFSignatureField signature1Field = document.Form.Fields["Signature1"] as PDFSignatureField; PDFComputedDigitalSignature signature1 = signature1Field.Signature as PDFComputedDigitalSignature; X509Certificate2 x509 = signature1.Certificate; //Print to console information contained in the certificate. Console.WriteLine("{0}Subject: {1}{0}", Environment.NewLine, x509.Subject); Console.WriteLine("{0}Issuer: {1}{0}", Environment.NewLine, x509.Issuer); Console.WriteLine("{0}Version: {1}{0}", Environment.NewLine, x509.Version); Console.WriteLine("{0}Valid Date: {1}{0}", Environment.NewLine, x509.NotBefore); Console.WriteLine("{0}Expiry Date: {1}{0}", Environment.NewLine, x509.NotAfter); Console.WriteLine("{0}Thumbprint: {1}{0}", Environment.NewLine, x509.Thumbprint); Console.WriteLine("{0}Serial Number: {1}{0}", Environment.NewLine, x509.SerialNumber); Console.WriteLine("{0}Friendly Name: {1}{0}", Environment.NewLine, x509.PublicKey.Oid.FriendlyName); Console.WriteLine("{0}Public Key Format: {1}{0}", Environment.NewLine, x509.PublicKey.EncodedKeyValue.Format(true)); Console.WriteLine("{0}Raw Data Length: {1}{0}", Environment.NewLine, x509.RawData.Length); Console.WriteLine("{0}Certificate to string: {1}{0}", Environment.NewLine, x509.ToString(true)); }
/// <summary> /// Main method for running the sample. /// </summary> public static SampleOutputInfo[] Run() { PDFFixedDocument document = new PDFFixedDocument(); PDFStandardFont helvetica = new PDFStandardFont(PDFStandardFontFace.Helvetica, 12); PDFBrush brush = new PDFBrush(); PDFPage page = document.Pages.Add(); // First name page.Canvas.DrawString("First name:", helvetica, brush, 50, 50); PDFTextBoxField firstNameTextBox = new PDFTextBoxField("firstname"); page.Fields.Add(firstNameTextBox); firstNameTextBox.Widgets[0].Font = helvetica; firstNameTextBox.Widgets[0].DisplayRectangle = new PDFDisplayRectangle(150, 45, 200, 20); firstNameTextBox.Widgets[0].BorderColor = PDFRgbColor.Black; firstNameTextBox.Widgets[0].BorderWidth = 1; // Last name page.Canvas.DrawString("Last name:", helvetica, brush, 50, 80); PDFTextBoxField lastNameTextBox = new PDFTextBoxField("lastname"); page.Fields.Add(lastNameTextBox); lastNameTextBox.Widgets[0].Font = helvetica; lastNameTextBox.Widgets[0].DisplayRectangle = new PDFDisplayRectangle(150, 75, 200, 20); lastNameTextBox.Widgets[0].BorderColor = PDFRgbColor.Black; lastNameTextBox.Widgets[0].BorderWidth = 1; // Sex page.Canvas.DrawString("Sex:", helvetica, brush, 50, 110); PDFRadioButtonField sexRadioButton = new PDFRadioButtonField("sex"); PDFRadioButtonWidget maleRadioItem = new PDFRadioButtonWidget(); sexRadioButton.Widgets.Add(maleRadioItem); PDFRadioButtonWidget femaleRadioItem = new PDFRadioButtonWidget(); sexRadioButton.Widgets.Add(femaleRadioItem); page.Fields.Add(sexRadioButton); page.Canvas.DrawString("Male", helvetica, brush, 180, 110); maleRadioItem.ExportValue = "M"; maleRadioItem.CheckStyle = PDFCheckStyle.Circle; maleRadioItem.DisplayRectangle = new PDFDisplayRectangle(150, 105, 20, 20); maleRadioItem.BorderColor = PDFRgbColor.Black; maleRadioItem.BorderWidth = 1; page.Canvas.DrawString("Female", helvetica, brush, 280, 110); femaleRadioItem.ExportValue = "F"; femaleRadioItem.CheckStyle = PDFCheckStyle.Circle; femaleRadioItem.DisplayRectangle = new PDFDisplayRectangle(250, 105, 20, 20); femaleRadioItem.BorderColor = PDFRgbColor.Black; femaleRadioItem.BorderWidth = 1; // First car page.Canvas.DrawString("First car:", helvetica, brush, 50, 140); PDFDropDownListField firstCarList = new PDFDropDownListField("firstcar"); firstCarList.Items.Add(new PDFListItem("Mercedes", "Mercedes")); firstCarList.Items.Add(new PDFListItem("BMW", "BMW")); firstCarList.Items.Add(new PDFListItem("Audi", "Audi")); firstCarList.Items.Add(new PDFListItem("Volkswagen", "Volkswagen")); firstCarList.Items.Add(new PDFListItem("Porsche", "Porsche")); firstCarList.Items.Add(new PDFListItem("Honda", "Honda")); firstCarList.Items.Add(new PDFListItem("Toyota", "Toyota")); firstCarList.Items.Add(new PDFListItem("Lexus", "Lexus")); firstCarList.Items.Add(new PDFListItem("Infiniti", "Infiniti")); firstCarList.Items.Add(new PDFListItem("Acura", "Acura")); page.Fields.Add(firstCarList); firstCarList.Widgets[0].Font = helvetica; firstCarList.Widgets[0].DisplayRectangle = new PDFDisplayRectangle(150, 135, 200, 20); firstCarList.Widgets[0].BorderColor = PDFRgbColor.Black; firstCarList.Widgets[0].BorderWidth = 1; // Second car page.Canvas.DrawString("Second car:", helvetica, brush, 50, 170); PDFListBoxField secondCarList = new PDFListBoxField("secondcar"); secondCarList.Items.Add(new PDFListItem("Mercedes", "Mercedes")); secondCarList.Items.Add(new PDFListItem("BMW", "BMW")); secondCarList.Items.Add(new PDFListItem("Audi", "Audi")); secondCarList.Items.Add(new PDFListItem("Volkswagen", "Volkswagen")); secondCarList.Items.Add(new PDFListItem("Porsche", "Porsche")); secondCarList.Items.Add(new PDFListItem("Honda", "Honda")); secondCarList.Items.Add(new PDFListItem("Toyota", "Toyota")); secondCarList.Items.Add(new PDFListItem("Lexus", "Lexus")); secondCarList.Items.Add(new PDFListItem("Infiniti", "Infiniti")); secondCarList.Items.Add(new PDFListItem("Acura", "Acura")); page.Fields.Add(secondCarList); secondCarList.Widgets[0].Font = helvetica; secondCarList.Widgets[0].DisplayRectangle = new PDFDisplayRectangle(150, 165, 200, 60); secondCarList.Widgets[0].BorderColor = PDFRgbColor.Black; secondCarList.Widgets[0].BorderWidth = 1; // I agree page.Canvas.DrawString("I agree:", helvetica, brush, 50, 240); PDFCheckBoxField agreeCheckBox = new PDFCheckBoxField("agree"); page.Fields.Add(agreeCheckBox); agreeCheckBox.Widgets[0].Font = helvetica; (agreeCheckBox.Widgets[0] as PDFCheckWidget).ExportValue = "YES"; (agreeCheckBox.Widgets[0] as PDFCheckWidget).CheckStyle = PDFCheckStyle.Check; agreeCheckBox.Widgets[0].DisplayRectangle = new PDFDisplayRectangle(150, 235, 20, 20); agreeCheckBox.Widgets[0].BorderColor = PDFRgbColor.Black; agreeCheckBox.Widgets[0].BorderWidth = 1; // Sign here page.Canvas.DrawString("Sign here:", helvetica, brush, 50, 270); PDFSignatureField signHereField = new PDFSignatureField("signhere"); page.Fields.Add(signHereField); signHereField.Widgets[0].Font = helvetica; signHereField.Widgets[0].DisplayRectangle = new PDFDisplayRectangle(150, 265, 200, 60); // Submit form PDFPushButtonField submitBtn = new PDFPushButtonField("submit"); page.Fields.Add(submitBtn); submitBtn.Widgets[0].DisplayRectangle = new PDFDisplayRectangle(450, 45, 150, 30); (submitBtn.Widgets[0] as PDFPushButtonWidget).Caption = "Submit form"; submitBtn.Widgets[0].BackgroundColor = PDFRgbColor.LightGray; PDFSubmitFormAction submitFormAction = new PDFSubmitFormAction(); submitFormAction.DataFormat = PDFSubmitDataFormat.FDF; submitFormAction.Fields.Add("firstname"); submitFormAction.Fields.Add("lastname"); submitFormAction.Fields.Add("sex"); submitFormAction.Fields.Add("firstcar"); submitFormAction.Fields.Add("secondcar"); submitFormAction.Fields.Add("agree"); submitFormAction.Fields.Add("signhere"); submitFormAction.SubmitFields = true; submitFormAction.Url = "http://www.o2sol.com/"; submitBtn.Widgets[0].MouseUp = submitFormAction; // Reset form PDFPushButtonField resetBtn = new PDFPushButtonField("reset"); page.Fields.Add(resetBtn); resetBtn.Widgets[0].DisplayRectangle = new PDFDisplayRectangle(450, 85, 150, 30); (resetBtn.Widgets[0] as PDFPushButtonWidget).Caption = "Reset form"; resetBtn.Widgets[0].BackgroundColor = PDFRgbColor.LightGray; PDFResetFormAction resetFormAction = new PDFResetFormAction(); resetBtn.Widgets[0].MouseUp = resetFormAction; // Print form PDFPushButtonField printBtn = new PDFPushButtonField("print"); page.Fields.Add(printBtn); printBtn.Widgets[0].DisplayRectangle = new PDFDisplayRectangle(450, 125, 150, 30); (printBtn.Widgets[0] as PDFPushButtonWidget).Caption = "Print form"; printBtn.Widgets[0].BackgroundColor = PDFRgbColor.LightGray; PDFJavaScriptAction printAction = new PDFJavaScriptAction(); printAction.Script = "this.print(true);\n"; printBtn.Widgets[0].MouseUp = printAction; SampleOutputInfo[] output = new SampleOutputInfo[] { new SampleOutputInfo(document, "formgenerator.pdf") }; return(output); }
/// <summary> /// Main method for running the sample. /// </summary> public static void Main(string[] args) { string supportPath = "..\\..\\..\\..\\..\\SupportFiles\\"; X509Certificate2 certificate = new X509Certificate2(supportPath + "O2SolutionsDemoCertificate.pfx", "P@ssw0rd!", X509KeyStorageFlags.Exportable); FileStream input = File.OpenRead(supportPath + "formfill.pdf"); PDFFixedDocument document = new PDFFixedDocument(input); input.Close(); // Sign the document PDFSignatureField signField = document.Form.Fields["signhere"] as PDFSignatureField; PDFCmsDigitalSignature signature = new PDFCmsDigitalSignature(); signature.SignatureDigestAlgorithm = PDFDigitalSignatureDigestAlgorithm.Sha256; signature.Certificate = certificate; signature.ContactInfo = "*****@*****.**"; signature.Location = "Cluj Napoca"; signature.Name = "O2 Solutions Support"; signature.Reason = "Simple signature"; signField.Signature = signature; using (FileStream output = File.Create("MultipleDigitalSignatures.pdf")) { document.Save(output); } // For the second signature the document must be opened in incremental update mode // by passing the PDFDocumentFeatures object to PDFFixedDocument constructor PDFDocumentFeatures df = new PDFDocumentFeatures(); // Do not load file attachments, new file attachments cannot be added. df.EnableDocumentFileAttachments = false; // Load form fields to support signing. df.EnableDocumentFormFields = true; // Do not load embedded JavaScript code, new JavaScript code at document level cannot be added. df.EnableDocumentJavaScriptFragments = false; // Do not load the named destinations, new named destinations cannot be created. df.EnableDocumentNamedDestinations = false; // Do not load the document outlines, new outlines cannot be created. df.EnableDocumentOutline = false; // Do not load annotations, new annotations cannot be added to existing pages. df.EnablePageAnnotations = true; // Do not load the page graphics, new graphics cannot be added to existing pages. df.EnablePageGraphics = false; // Incremental update mode requires the changes to be added to the input file input = File.OpenRead("MultipleDigitalSignatures.pdf"); document = new PDFFixedDocument(input, df); input.Close(); signField = new PDFSignatureField("sign2"); document.Pages[0].Fields.Add(signField); signField.Widgets[0].VisualRectangle = new PDFDisplayRectangle(150, 350, 200, 60); signature = new PDFCmsDigitalSignature(); signature.SignatureDigestAlgorithm = PDFDigitalSignatureDigestAlgorithm.Sha256; signature.Certificate = certificate; signature.ContactInfo = "*****@*****.**"; signature.Location = "Cluj Napoca"; signature.Name = "O2 Solutions Support"; signature.Reason = "Simple signature"; signField.Signature = signature; // The same file used as input must also be used as output as the Save method saves only the changes and not the entire file. using (FileStream output = File.Open("MultipleDigitalSignatures.pdf", FileMode.Open)) { document.Save(output); } }