diff --git a/Digital Signature/How-to-apply-multiple-signatures-to-a-PDF-in-C#/How-to-apply-multiple-signatures-to-a-PDF-in-C#.slnx b/Digital Signature/How-to-apply-multiple-signatures-to-a-PDF-in-C#/How-to-apply-multiple-signatures-to-a-PDF-in-C#.slnx new file mode 100644 index 00000000..330bc8fe --- /dev/null +++ b/Digital Signature/How-to-apply-multiple-signatures-to-a-PDF-in-C#/How-to-apply-multiple-signatures-to-a-PDF-in-C#.slnx @@ -0,0 +1,3 @@ + + + diff --git a/Digital Signature/How-to-apply-multiple-signatures-to-a-PDF-in-C#/How-to-apply-multiple-signatures-to-a-PDF-in-C#/Data/Input.pdf b/Digital Signature/How-to-apply-multiple-signatures-to-a-PDF-in-C#/How-to-apply-multiple-signatures-to-a-PDF-in-C#/Data/Input.pdf new file mode 100644 index 00000000..0a27340e Binary files /dev/null and b/Digital Signature/How-to-apply-multiple-signatures-to-a-PDF-in-C#/How-to-apply-multiple-signatures-to-a-PDF-in-C#/Data/Input.pdf differ diff --git a/Digital Signature/How-to-apply-multiple-signatures-to-a-PDF-in-C#/How-to-apply-multiple-signatures-to-a-PDF-in-C#/Data/PDF.pfx b/Digital Signature/How-to-apply-multiple-signatures-to-a-PDF-in-C#/How-to-apply-multiple-signatures-to-a-PDF-in-C#/Data/PDF.pfx new file mode 100644 index 00000000..b50733ed Binary files /dev/null and b/Digital Signature/How-to-apply-multiple-signatures-to-a-PDF-in-C#/How-to-apply-multiple-signatures-to-a-PDF-in-C#/Data/PDF.pfx differ diff --git a/Digital Signature/How-to-apply-multiple-signatures-to-a-PDF-in-C#/How-to-apply-multiple-signatures-to-a-PDF-in-C#/Data/Student Signature.jpg b/Digital Signature/How-to-apply-multiple-signatures-to-a-PDF-in-C#/How-to-apply-multiple-signatures-to-a-PDF-in-C#/Data/Student Signature.jpg new file mode 100644 index 00000000..7d4f0a53 Binary files /dev/null and b/Digital Signature/How-to-apply-multiple-signatures-to-a-PDF-in-C#/How-to-apply-multiple-signatures-to-a-PDF-in-C#/Data/Student Signature.jpg differ diff --git a/Digital Signature/How-to-apply-multiple-signatures-to-a-PDF-in-C#/How-to-apply-multiple-signatures-to-a-PDF-in-C#/Data/Teacher Signature.png b/Digital Signature/How-to-apply-multiple-signatures-to-a-PDF-in-C#/How-to-apply-multiple-signatures-to-a-PDF-in-C#/Data/Teacher Signature.png new file mode 100644 index 00000000..2518aea8 Binary files /dev/null and b/Digital Signature/How-to-apply-multiple-signatures-to-a-PDF-in-C#/How-to-apply-multiple-signatures-to-a-PDF-in-C#/Data/Teacher Signature.png differ diff --git a/Digital Signature/How-to-apply-multiple-signatures-to-a-PDF-in-C#/How-to-apply-multiple-signatures-to-a-PDF-in-C#/How-to-apply-multiple-signatures-to-a-PDF-in-C#.csproj b/Digital Signature/How-to-apply-multiple-signatures-to-a-PDF-in-C#/How-to-apply-multiple-signatures-to-a-PDF-in-C#/How-to-apply-multiple-signatures-to-a-PDF-in-C#.csproj new file mode 100644 index 00000000..9dce2d56 --- /dev/null +++ b/Digital Signature/How-to-apply-multiple-signatures-to-a-PDF-in-C#/How-to-apply-multiple-signatures-to-a-PDF-in-C#/How-to-apply-multiple-signatures-to-a-PDF-in-C#.csproj @@ -0,0 +1,41 @@ + + + + Exe + net8.0 + How_to_apply_multiple_signatures_to_a_PDF_in_C_ + enable + enable + + + + + + + + + + + + + Always + + + Always + + + Always + + + Always + + + Always + + + + + + + + diff --git a/Digital Signature/How-to-apply-multiple-signatures-to-a-PDF-in-C#/How-to-apply-multiple-signatures-to-a-PDF-in-C#/Output/.gitkeep b/Digital Signature/How-to-apply-multiple-signatures-to-a-PDF-in-C#/How-to-apply-multiple-signatures-to-a-PDF-in-C#/Output/.gitkeep new file mode 100644 index 00000000..e69de29b diff --git a/Digital Signature/How-to-apply-multiple-signatures-to-a-PDF-in-C#/How-to-apply-multiple-signatures-to-a-PDF-in-C#/Program.cs b/Digital Signature/How-to-apply-multiple-signatures-to-a-PDF-in-C#/How-to-apply-multiple-signatures-to-a-PDF-in-C#/Program.cs new file mode 100644 index 00000000..36ba2aa2 --- /dev/null +++ b/Digital Signature/How-to-apply-multiple-signatures-to-a-PDF-in-C#/How-to-apply-multiple-signatures-to-a-PDF-in-C#/Program.cs @@ -0,0 +1,59 @@ +using Syncfusion.Pdf; +using Syncfusion.Pdf.Graphics; +using Syncfusion.Pdf.Parsing; +using Syncfusion.Pdf.Security; + +namespace Create_PDF +{ + class Program + { + public static void Main(string[] args) + { + //Register your Syncfusion License Key. + Syncfusion.Licensing.SyncfusionLicenseProvider.RegisterLicense("Your License Key"); + //Load the PDF and call the SignPDF method. + FileStream fileStream = new FileStream("Data/Input.pdf", FileMode.Open, FileAccess.ReadWrite); + MemoryStream outputStream = SignPDF(fileStream, "signature1", 0); + //Call the SignPDF method again for second signer + MemoryStream outputStream1 = SignPDF(outputStream, "signature2", 1); + //Save the final multi signed PDF document + File.WriteAllBytes(@"SignedDocument.pdf", outputStream1.ToArray()); + } + + public static MemoryStream SignPDF(Stream inputStream, string signatureName, int pageIndex) + { + // Load the PDF document from the input stream + PdfLoadedDocument loadedDocument = new PdfLoadedDocument(inputStream); + + // Get the specified page + PdfLoadedPage page = loadedDocument.Pages[pageIndex] as PdfLoadedPage; + + // Load the certificate + FileStream certificateStream = new FileStream(Path.GetFullPath(@"Data/PDF.pfx"), FileMode.Open, FileAccess.Read); + PdfCertificate certificate = new PdfCertificate(certificateStream, "syncfusion"); + + // Create the signature + PdfSignature signature = new PdfSignature(loadedDocument, page, certificate, signatureName); + signature.Bounds = new Syncfusion.Drawing.RectangleF(400, 740, 90, 20); + + // Choose the image based on the signature name + string imagePath = signatureName == "signature1" + ? @"Data/Student Signature.jpg" + : @"Data/Teacher Signature.png"; + + FileStream imageStream = new FileStream(Path.GetFullPath(imagePath), FileMode.Open, FileAccess.Read); + PdfBitmap signatureImage = new PdfBitmap(imageStream); + + // Draw the image in the signature appearance + signature.Appearance.Normal.Graphics.DrawImage(signatureImage, 0, 0, 90, 20); + + // Save the signed document to a memory stream + MemoryStream outputStream = new MemoryStream(); + loadedDocument.Save(outputStream); + loadedDocument.Close(true); + outputStream.Position = 0; // Reset stream position for next use + return outputStream; + } + + } +} \ No newline at end of file