GroupDocs.Signature for .NET 23.10 Release Notes

We are excited to announce the release of GroupDocs.Signature Version 23.10, which brings a host of new features, enhancements, and bug fixes to further improve your product experience. With a focus on enhancing functionality, security, and user experience, this release is a significant milestone in GroupDocs.Signature’s journey.

Full list of changes in this release

KeyCategorySummary
SIGNATURENET-4786★ FeatureImplement ability to sign the xlsm with VBA files
SIGNATURENET-4809EnhancementPDF digital signing with external digital signatures
SIGNATURENET-4853EnhancementSupporting Swiss QR Code symbology
SIGNATURENET-4818EnhancementImprove experience with multi pages Webp document
SIGNATURENET-4784EnhancementSupport signing with HIBC LIC primary and secondary data structure
SIGNATURENET-4680🔧 FixSigning pdf with digital signature puts evaluation watermark on output doc

Major Features

Implement ability to sign the xlsm with VBA files

🌐 In response to your feedback, we’ve implemented the ability to sign xlsm files containing VBA macros. Now, you can seamlessly sign your xlsm documents with VBA files for added security and compliance. New class DigitalVBA has been added to support signing VBA macroses.

 using (Signature signature = new Signature(excelFilePath))
{
     DigitalSignOptions signOptions = new DigitalSignOptions();
    //Add extension for signing VBA project digitally
    DigitalVBA digitalVBA = new DigitalVBA(certificatePath, password);
    //Set to true only for signing VBA project
    digitalVBA.SignOnlyVBAProject = true;
    digitalVBA.Comments = "VBA Comment";
    signOptions.Extensions.Add(digitalVBA);

    // sign document to file
    signature.Sign(outputFilePath, signOptions);
}

PDF digital signing with external digital signatures

We understand the importance of digital signatures in PDF documents. In this release, we’ve introduced support for signing PDFs with external digital signatures, making it easier to verify the authenticity and integrity of your PDF files. It supports usb smartcards, tokens without exportable private keys.

Supporting Swiss QR Code symbology

🌐 To meet the specific needs of our Swiss users, we’ve added support for the Swiss QR Code symbology. Now you can generate and process Swiss QR Codes with ease, ensuring compatibility with the latest standards. New class SwissQR has been added, which allows to configure QR properties.

 using (Signature signature = new Signature(filePath))
{
    var data = new SwissQR()
    {
        Account = "CH4431999123000889012",
        Amount = 1000.25m,
        Currency = "CHF",
        Reference = "210000000003139471430009017",
        Creditor = new SwissAddress
        {
            Name = "Muster & Söhne",
            Street = "Musterstrasse",
            HouseNo = "12b",
            PostalCode = "8200",
            Town = "Zürich",
            CountryCode = "CH"
        },

        Debtor = new SwissAddress
        {
            Name = "Muster AG",
            Street = "Musterstrasse",
            HouseNo = "1",
            PostalCode = "3030",
            Town = "Bern",
            CountryCode = "CH"
        }
    };

    // create options
    QrCodeSignOptions options = new QrCodeSignOptions
    {
        EncodeType = QrCodeTypes.QR,
        Left = 100,
        Top = 100,
        Data = data
    };

    // sign document to file
    signature.Sign(outputFilePath, options);
}

//Thenw let's search qr code and get decoded typed data back
using (Signature.Signature signature = new Signature.Signature(outputFilePath))
{
    List<QrCodeSignature> signatures = signature.Search<QrCodeSignature>(SignatureType.QrCode);
    QrCodeSignature qrCode = signatures.FirstOrDefault();
    var swissData = qrCode.GetData<SwissQR>();
}

Improve experience with multi pages Webp document

🌐 Your experience with multi-page WebP documents has been significantly enhanced. From now it’s possible to sign specific pages in the WebP document.

using (var signature = new Signature("multipage.webp"))
{
    var options = new QrCodeSignOptions("Patient #363633103. R: No-Issues")
    {
        // set signature position 
        Left = 10,
        Top = 10,
        // set signature rectangle
        Width = 200,
        Height = 200,
        //specify pages numbers which we want to sign
        PagesSetup = new PagesSetup()
        {
            PageNumbers = new List<int> { 1, 3 }
        }
    };

    // sign document to file
    SignResult signResult = signature.Sign(outputFilePath, options);
    Console.WriteLine($"\nDocument signed with {signResult.Succeeded.Count} signatures");
    Console.WriteLine("\nList of newly created signatures:");
    foreach (BaseSignature temp in signResult.Succeeded)
    {
        Console.WriteLine($"{temp.SignatureType} at page #{temp.PageNumber}: Id:{temp.SignatureId}.");
    }
}

Support signing with HIBC LIC primary and secondary data structure

🌐 Ability to sign with HIBC LIC barcode Symbology using primary and secondary data separately


 using (Signature signature = new Signature(filePath))
{
    // Create HIBCLIC Secondary data
    var data = new HIBCLICSecondaryAdditionalData()
    {
        ExpiryDate = DateTime.Today,
        ExpiryDateFormat = HIBCLICDateFormat.MMDDYY,
        Quantity = 30,
        LotNumber = "LOT123",
        SerialNumber = "SERIAL123",
        DateOfManufacture = DateTime.Today
    };

    // create options
    QrCodeSignOptions options = new QrCodeSignOptions
    {
        EncodeType = QrCodeTypes.QR,
        Left = 100,
        Top = 100,
        Data = data
    };

    // sign document to file
    signature.Sign(outputFilePath, options);
}

//Thenw let's search qr code and get decoded typed data back
using (Signature.Signature signature = new Signature.Signature(outputFilePath))
{
    List<QrCodeSignature> signatures = signature.Search<QrCodeSignature>(SignatureType.QrCode);
    QrCodeSignature qrCode = signatures.FirstOrDefault();
    var data = qrCode.GetData<HIBCLICSecondaryAdditionalData>();
}

Signing pdf with digital signature puts evaluation watermark on output doc

🌐 We’ve addressed a bug where signing PDF documents with digital signatures would inadvertently result in an evaluation watermark appearing on the output document. This issue has been resolved, ensuring that your signed documents remain professional and watermark-free.