Browse our Products
If so you can download any of the below versions for testing. The product will function as normal except for an evaluation limitation. At the time of purchase we provide a license file via email that will allow the product to work in its full capacity. If you would also like an evaluation license to test without any restrictions for 30 days, please follow the directions provided here.
If you experience errors, when you try to download a file, make sure your network policies (enforced by your company or ISP) allow downloading ZIP and/or MSI files.
GroupDocs.Signature for Node.js via Java 24.3 introduces the Mailmark2D class to support the Royal Mail Mailmark 2D barcode standard. You can use it for various purposes within your Node.js apps, like shipment tracking and identification. This code example highlights how to add Mailmark 2D barcodes.
Signature signature = new Signature(filePath);
// create Mailmark2D data object
Mailmark2D mailmark2D = new Mailmark2D();
mailmark2D.setUPUCountryID("JGB ");
mailmark2D.setInformationTypeID("0");
mailmark2D.setClass("1");
mailmark2D.setSupplyChainID(123);
mailmark2D.setItemID(1234);
mailmark2D.setDestinationPostCodeAndDPS("QWE1");
mailmark2D.setRTSFlag("0");
mailmark2D.setReturnToSenderPostCode("QWE2");
mailmark2D.setDataMatrixType(Mailmark2DType.Type_7);
mailmark2D.setCustomerContentEncodeMode(DataMatrixEncodeMode.C40);
mailmark2D.setCustomerContent("CUSTOM");
// create options
QrCodeSignOptions options = new QrCodeSignOptions();
options.setEncodeType(QrCodeTypes.QR);
options.setLeft(100);
options.setTop(100);
// setup Data property to Mailmark2D instance
options.setData(mailmark2D);
// sign document to file
signature.sign(outputFilePath, options);
GS1DotCodeA new property GS1DotCode has been added to the BarcodeTypes class in this release of the Node.js document signing API. GS1 DotCode is a 2D matrix symbology that can hold various GS1 keys and attributes. It is useful for encoding trade item information. Here is how you can add GS1DotCode to your apps.
const fs = require('fs');
const path = require('path');
async function signDocumentWithGS1DotCode(groupdocs, sourceFilePath, destinFilePath) {
// create GS1DotCode Barcode options
const GS1DotCodeOptions = new groupdocs.signature.options.sign.BarcodeSignOptions("(01)04912345123459(15)970331(30)128(10)ABC123", groupdocs.signature.options.sign.BarcodeTypes.GS1DotCode);
GS1DotCodeOptions.left = 1;
GS1DotCodeOptions.top = 1;
GS1DotCodeOptions.height = 150;
GS1DotCodeOptions.width = 200;
GS1DotCodeOptions.returnContent = true;
GS1DotCodeOptions.returnContentType = groupdocs.signature.FileType.PNG;
// compose list of options
const listOptions = [GS1DotCodeOptions];
// sign document to file with list of all specific QR-Codes
const signResult = await groupdocs.signature.Sign(sourceFilePath, destinFilePath, listOptions);
console.log(`\nSource document signed successfully.\nFile saved at ${destinFilePath}`);
}
module.exports = signDocumentWithGS1DotCode;
We have now enabled the signing of XLSX files containing VBA macros in GroupDocs.Signature for Node.js via Java. This functionality upgrades security and compliance for these document types. The following code example illustrates the feature usage.
const fs = require('fs');
const path = require('path');
async function signExcelDocumentWithDigitalVBA(groupdocs, excelFilePath, certificatePath, password, outputFilePath) {
const signature = new groupdocs.signature.Signature(excelFilePath);
const signOptions = new groupdocs.signature.options.sign.DigitalSignOptions();
// Add extension for signing VBA project digitally
const digitalVBA = new groupdocs.signature.options.sign.DigitalVBA(certificatePath, password);
digitalVBA.signOnlyVBAProject = true;
digitalVBA.comments = "VBA Comment";
signOptions.extensions.push(digitalVBA);
// sign document to file
await signature.sign(outputFilePath, signOptions);
console.log(`\nDocument signed with Digital VBA extension. File saved at ${outputFilePath}`);
}
module.exports = signExcelDocumentWithDigitalVBA;
This release introduces support for signing PDF documents with external digital signatures stored on USB smart cards or tokens without needing exportable private keys.
Text signatures can now be created directly within the headers and footers of Word documents using the Node.js signature API. Developers can use the TextSignOptions class and ShapePosition property to customize placement, as showcased in this code example.
const fs = require('fs');
const path = require('path');
async function signDocumentWithTextSignatures(groupdocs, filePath, outputFilePath) {
// Initialize Signature instance
const signature = new groupdocs.signature.Signature(filePath);
// Create an array to hold sign options
const listOptions = [];
// Define header text sign option
const headerSign = new groupdocs.signature.options.sign.TextSignOptions("Hello header!");
headerSign.shapePosition = groupdocs.signature.options.sign.ShapePosition.Header;
// Define footer text sign option
const footerSign = new groupdocs.signature.options.sign.TextSignOptions("Hello footer!");
footerSign.shapePosition = groupdocs.signature.options.sign.ShapePosition.Footer;
// Add sign options to the list
listOptions.push(headerSign);
listOptions.push(footerSign);
// Sign document to file with list of sign options
await signature.sign(outputFilePath, listOptions);
console.log(`Document signed with text signatures. File saved at ${outputFilePath}`);
}
module.exports = signDocumentWithTextSignatures;
Build Node.js applications with the capability to process HIBC LIC QR Codes using the latest Node.js API release. The code sample given below demonstrates the feature usage.
const fs = require('fs');
const path = require('path');
async function signAndSearchQrCode(groupdocs, filePath, outputFilePath) {
// Sign document with QR code
const signature = new groupdocs.signature.Signature(filePath);
const hibclicCombinedData = new groupdocs.signature.options.sign.HIBCLICCombinedData();
{
const primaryData = new groupdocs.signature.options.sign.HIBCLICPrimaryData();
primaryData.productOrCatalogNumber = "12345";
primaryData.labelerIdentificationCode = "A999";
primaryData.unitOfMeasureID = 1;
const secondaryAdditionalData = new groupdocs.signature.options.sign.HIBCLICSecondaryAdditionalData();
secondaryAdditionalData.expiryDate = new Date();
secondaryAdditionalData.expiryDateFormat = groupdocs.signature.options.sign.HIBCLICDateFormat.MMDDYY;
secondaryAdditionalData.quantity = 30;
secondaryAdditionalData.lotNumber = "LOT123";
secondaryAdditionalData.serialNumber = "SERIAL123";
secondaryAdditionalData.dateOfManufacture = new Date();
hibclicCombinedData.primaryData = primaryData;
}
const options = new groupdocs.signature.options.sign.QrCodeSignOptions();
options.encodeType = groupdocs.signature.options.sign.QrCodeTypes.QR;
options.left = 100;
options.top = 100;
options.data = hibclicCombinedData;
await signature.sign(outputFilePath, options);
// Search QR code and get decoded typed data back
const searchSignature = new groupdocs.signature.Signature(outputFilePath);
const signatures = await searchSignature.search(groupdocs.signature.options.sign.QrCodeSignature, groupdocs.signature.SignatureType.QrCode);
const qrCode = signatures[0];
const decodedData = qrCode.getData(groupdocs.signature.options.sign.HIBCLICCombinedData);
console.log("QR code searched and decoded successfully:");
console.log(decodedData);
}
module.exports = signAndSearchQrCode;
System.Drawing.Common to version 6.GetSignPages implementation.GetSearchPages implementation in the SearchOptions classes.You can view the list of all new features, enhancements, and bug fixes introduced in this release by visiting GroupDocs.Signature for Node.js via Java 24.3 Release Notes.