// This code is part of Document Solutions for PDF demos.
// Copyright (c) MESCIUS inc. All rights reserved.
using System;
using System.IO;
using System.Drawing;
using System.Text;
using System.Collections.Generic;
using System.Security.Cryptography;
using System.Security.Cryptography.X509Certificates;

using GrapeCity.Documents.Pdf;
using GrapeCity.Documents.Pdf.Security;
using GrapeCity.Documents.Pdf.AcroForms;
using GrapeCity.Documents.Text;

namespace DsPdfWeb.Demos
    // This sample shows how to sign an existing PDF file containing
    // an empty signature field with a signature that complies with
    // PAdES (PDF Advanced Electronic Signatures) B-B level standard.
    public class SignPAdESBB
        public int CreatePDF(Stream stream)
            var doc = new GcPdfDocument();
            using var s = File.OpenRead(Path.Combine("Resources", "PDFs", "SignPAdESBB.pdf"));

            var pfxPath = Path.Combine("Resources", "Misc", "DsPdfTest.pfx");
            var cert = new X509Certificate2(pfxPath, "qq");
            var sp = SignatureProperties.CreatePAdES_B_B(cert);
            sp.SignatureAppearance.Caption = "PAdES B-B";
            sp.SignatureField = doc.AcroForm.Fields[0];
            doc.Sign(sp, stream);

            // Done.
            return doc.Pages.Count;