Implement MailMark as a New QR Type Embedded Object
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);
Source*
New Barcode Type: GS1DotCode
A 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;
Source*
Sign XLSM with VBA Files
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;
Source*
PDF Digital Signing with External Digital Signatures
This release introduces support for signing PDF documents with external digital signatures stored on USB smart cards or tokens without needing exportable private keys.
Create Text Signatures in Word Headers and Footers
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;
Source*
Introducing HIBC LIC QR Code Support
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;
Source*
Other Enhancements
- Enhance archive operations with supporting verify command.
- Update deprecated
System.Drawing.Common
to version 6. - Remove duplicated
GetSignPages
implementation. - Improve experience with multi-pages TIFF document.
- Extend document preview generation data.
- Remove duplicates of
GetSearchPages
implementation in the SearchOptions
classes. - Improve experience with multi-page WEBP document.
- Support signing with HIBC LIC primary and secondary data structure.
- Enhance archive operations with supporting preview command.
- Supporting HIBC PAS QR symbology.
Bug Fixes
- Fixing image acquisition in the Linux environment (SIGNATURENET-4726).
- Unreadable evaluation message for PDF signed digitally without a license (SIGNATURENET-4824).
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.