GroupDocs.Signature for .NET 23.11 Release Notes

We are excited to announce the release of GroupDocs.Signature Version 23.11, which brings new enhancements, and bug fixes to further improve your product experience.

Full list of changes in this release

KeyCategorySummary
SIGNATURENET-4736EnhancementEnhance Archive operations with supporting preview command
SIGNATURENET-4760EnhancementSupporting MaxiCode symbology
SIGNATURENET-4357EnhancementSupporting HIBC PAS QR symbology
SIGNATURENET-4893🔧 FixNet6 nuget fails on linux platform

Public API Changes

From this version .NET 6 Nuget depends on System.Drawing.Common version 6.0.0 instead of 7.0.0. This was done to support cross-platform.

Major Features

Enhance Archive operations with supporting preview command

🌐 We are thrilled to introduce a powerful enhancement to our Archive operations with the addition of Preview Command support. This cutting-edge feature is designed to provide users with a seamless and insightful preview experience while interacting with archived documents.

using (Signature signature = new Signature(zipfilePath))
{
    // instantiate preview options
    PreviewOptions previewOption = new PreviewOptions(CreatePageStream, ReleasePageStream)
    {
        PreviewFormat = PreviewOptions.PreviewFormats.PNG,
    };
    // generate preview
    signature.GeneratePreview(previewOption);
}

private Stream CreatePageStream(PreviewPageData pageData)
{
    string imageFilePath = Path.Combine(Constants.OutputPath, "PreviewArchiveDocuments",
        $"{pageData.FileName}-page-{pageData.PageNumber}.{pageData.PreviewFormat.ToString().ToLower()}");
    string folder = Path.GetDirectoryName(imageFilePath);
    if (!Directory.Exists(folder))
    {
        Directory.CreateDirectory(folder);
    }
    return new FileStream(imageFilePath, FileMode.Create);
}

private void ReleasePageStream(PreviewPageData pageData, Stream pageStream)
{
    pageStream.Dispose();
    string imageFilePath = Path.Combine(Constants.OutputPath, "PreviewArchiveDocuments",
        $"{pageData.FileName}-page-{pageData.PageNumber}.{pageData.PreviewFormat.ToString().ToLower()}");
    Console.WriteLine($"Image file {imageFilePath} is ready for preview");
}

Supporting MaxiCode symbology

🌐 Elevate your barcode experience with the inclusion of MaxiCode symbology, a 2D matrix code that excels in storing large amounts of data in a compact form. This comprehensive barcode solution opens up new possibilities for encoding and decoding information. New class MaxiCodeMode2 has been added, which allows to configure QR properties.

 using (Signature signature = new Signature(filePath))
{
    var data = new MaxiCodeMode2()
    {
        PostalCode = "524032140",
        CountryCode = 056,
        ServiceCategory = 999,
        SecondMessage = new MaxiCodeSecondMessage()
        {
            Message = "Test message"
        }
    };

    // create options
    QrCodeSignOptions options = new QrCodeSignOptions
    {
        EncodeType = QrCodeTypes.QR,
        Left = 110,
        Top = 110,
        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<MaxiCodeMode2>();
}

Supporting HIBC PAS QR symbology

🌐 Elevate healthcare processes with HIBC PAS QR symbology support, designed specifically to meet the stringent requirements of the healthcare industry. Ensure precision and accuracy in encoding and decoding critical data related to prescriptions and healthcare information. New class HIBCPASData has been added, which allows to configure QR properties.

 using (Signature signature = new Signature(filePath))
{
    var data = new HIBCPASData()
    {
        DataLocation = HIBCPASDataLocation.Patient,
    };

    data.AddRecord(HIBCPASDataType.LabelerIdentificationCode, "A123");
    data.AddRecord(HIBCPASDataType.ManufacturerSerialNumber, "SERIAL123");

    // create options
    QrCodeSignOptions options = new QrCodeSignOptions
    {
        EncodeType = QrCodeTypes.QR,
        Left = 110,
        Top = 110,
        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<HIBCPASData>();
}