GroupDocs.Signature for .NET 23.2 Release Notes

There are 15+ features, enhancements, and bug fixes in this release.

Full list of changes in this release

KeyCategorySummary
SIGNATURENET-4257FeatureImplement support of Succeeded Signature list for Verification Result
SIGNATURENET-4255FeatureImplement new Barcode Type HIBC LIC 39/128 (HIBCCode39LIC, HIBCCode128LIC)
SIGNATURENET-4254FeatureImplement new QR-Code Types HIBC LIC QR
SIGNATURENET-4223FeatureImplement Verification of Certificate documents
SIGNATURENET-4317FixSigned PDF Documents saved under .NET Core are not opening with the native Adobe Acrobat Reader
SIGNATURENET-4316FixPDF Documents saved under non-licensed mode are unable to be digitally signed
SIGNATURENET-4315FixError on signing PDF Document with Digital signature and specific certificate properties
SIGNATURENET-4314FixPDF documents metadata items do not detect data type on loading
SIGNATURENET-4313FixLoading of special JPEG images raises the StackOverflowException exception
SIGNATURENET-4312FixThe exception occurs when signing Spreadsheet documents with specific X509 .pfx certificates
SIGNATURENET-4311FixUnexpected response image when rendering .ods file
SIGNATURENET-4310FixException is thrown when processing image preview with .ods file
SIGNATURENET-4309FixGS1CompositeBar barcodes are not recognized with full original text
SIGNATURENET-4303FixProcessing time may be equal to zero for some cases under Net4.0 framework
SIGNATURENET-4281FixMailmark Barcode type default value throws an exception

Major Features

This release includes three features and one enhancement:

Implement support for Succedded list of Verification Result

VerificationResult now supports the list of the Succeeded verified signatures.

/// <summary>
/// Verify document and list Succeded signatures
/// </summary>
using (Signature signature = new Signature("sample.pdf"))
{
    var options = new BarcodeVerifyOptions()
    {
        Text = "12345",
        MatchType = TextMatchType.Contains
    };
    // verify document signatures
    VerificationResult result = signature.Verify(options);
    if (result.IsValid)
    {
        Console.WriteLine("\nDocument was verified successfully!");
        Console.WriteLine("\nList of Succeded sigantures:");
        foreach(BaseSignature temp in result.Succeeded)
        {
            Console.WriteLine($" -#{temp.SignatureId}-{temp.SignatureType} at: {temp.Left}x{temp.Top}. Size: {temp.Width}x{temp.Height}")
        }
    }
    else
    {
        Console.WriteLine("\nDocument failed verification process.");
    }
}

Added new Barcode Types HIBC LIC 39 and HIBC LIC 128

BarcodeTypes static class was updated with new types to support HIBC LIC Barcodes.

/// <summary>
/// HIBC LIC 39 Barcode Type object.
/// </summary>
public static readonly BarcodeType HIBCCode39LIC;

/// <summary>
/// HIBC LIC 128 Barcode Type object.
/// </summary>
public static readonly BarcodeType HIBCCode128LIC;
using (Signature signature = new Signature("sample.pdf""))
{
    // create barcode option with predefined barcode text that follow HIBC LIC standard
    BarcodeSignOptions options = new BarcodeSignOptions("+A99912345/$$52001510X3")
    {
        // setup Barcode encoding type
        EncodeType = BarcodeTypes.HIBCCode39LIC,
        // set signature position
        Left = 100,
        Top = 100
    };
    // sign document to file
    SignResult result = signature.Sign(outputFilePath, options);
}

Implemented new QR Code Types HIBC LIC QR, Aztec and DataMatrix

QRCodeTypes static class was updated with new types to support HIBC LIC QR.

/// <summary>
/// HIBC LIC QR-Code Type object.
/// </summary>
public static readonly QrCodeType HIBCLICQR;

/// <summary>
/// HIBC LIC Data Matrix QR-Code Type object.
/// </summary>
public static readonly QrCodeType HIBCLICDataMatrix;

/// <summary>
/// HIBC LIC Aztec QR-Code Type object.
/// </summary>
public static readonly QrCodeType HIBCLICAztec;
using (Signature signature = new Signature("sample.pdf""))
{
    // create barcode option with predefined QR-Code text that follow HIBC LIC standard
    var options = new QrCodeSignOptions("A123PROD30917/75#422011907#GP293")
    {
        // setup Barcode encoding type
        EncodeType = QrCodeTypes.HIBCLICQR,
        // set signature position
        Left = 100,
        Top = 100
    };
    // sign document to file
    SignResult result = signature.Sign(outputFilePath, options);
}

Implement Verification of Certificate documents

New CertificateVerifyOptions class contains different properties of the digital certificate file to validate over the Verify method.

var loadOptions = new LoadOptions()
{
    Password = "1234567890"
};
using (Signature signature = new Signature("certificate.pfx", loadOptions))
{
    CertificateVerifyOptions options = new CertificateVerifyOptions()
    {
        // do not provide X.509 chain validation
        PerformChainValidation = false,
        // find exact math
        MatchType = TextMatchType.Exact,
        // check the serial number
        SerialNumber = "00AAD0D15C628A13C7"
    };

    // verify certificate
    VerificationResult result = signature.Verify(options);
    if (result.IsValid)
    {
        Console.WriteLine("\nCertificate was verified successfully!");
    }
    else
    {
        Helper.WriteError("\nCertificate failed verification process.");
    }
}