Browse our Products

Aspose.BarCode for Cpp 24.12 Release Notes

All Changes

KeySummaryCategory
BARCODENET-37359Add QualitySettings support to NBase processorEnhancement
BARCODENET-37362Add QualitySettings support to WDTBase processorEnhancement
BARCODENET-37929Implement pdf encoder for Aspose.BarcodeEnhancement
BARCODENET-39169Barcode scanner reads the wrong value using USPS OneCodeBug
BARCODENET-39171Fix infinite recursion in QuadPointsHelperBug
BARCODENET-39173Generator always throws Aspose.BarCode.BarCodeException: ‘Can’t render barcode: not enough space’ on RotationAngle=45Bug
BARCODENET-39178Fields of ComplexBarcode.Address were not initializedBug

Public API changes and backwards compatibility

Recognition Quality and Speed Improvements

NBase Processors

The recognition quality and speed of NBase processors have been enhanced. The improvements include support for the following symbologies:

  • Code128
  • GS1Code128
  • SCC14
  • EAN14
  • SSCC18
  • AustralianPosteParcel
  • SwissPostParcel
  • CodablockF
  • HIBCCode128LIC
  • HIBCCode128PAS
  • Code16K
  • Code93
  • Supplement
  • UPCE

WBase Processors

The recognition quality and speed of WBase processors have also been enhanced. The improvements include support for the following symbologies:

  • Codabar
  • Code11
  • Code39
  • Code39FullASCII
  • Code32
  • VIN
  • PZN
  • HIBCCode39LIC
  • HIBCCode39PAS
  • DataLogic2of5
  • IATA2of5
  • Interleaved2of5
  • ItalianPost25
  • ITF6
  • ITF14
  • OPC
  • DeutschePostIdentcode
  • DeutschePostLeitcode
  • Matrix2of5
  • MSI
  • Standard2of5

PDF Encoder (Experimental Mode)

An experimental PDF encoder has been implemented, enabling the saving of generated barcodes in vector PDF format.

auto gen = System::MakeObject<BarcodeGenerator>(EncodeTypes::Code128, u"Aspose");
gen->Save(u"code128.pdf", Aspose::BarCode::Generation::BarCodeImageFormat::Pdf);

Fixed USPS OneCode Encoder

The generation of USPS OneCode barcodes with a starting value of “00” has been corrected.

System::SharedPtr<BarcodeGenerator> gen = System::MakeObject<BarcodeGenerator>(EncodeTypes::OneCode, u"0027090323734116180477077361580");

gen->Save(u"onecode.png", Aspose::BarCode::Generation::BarCodeImageFormat::Png);
System::SharedPtr<BarCodeReader> reader = System::MakeObject<BarCodeReader>(gen->GenerateBarCodeImage(), DecodeType::OneCode);

for (System::SharedPtr<BarCodeResult> result : reader->ReadBarCodes())
{
    System::Console::WriteLine(result->get_CodeTypeName() + u":" + result->get_CodeText());
}

Fixed Barcode Generation in AutoSizeMode::Nearest Mode

Barcode generation in AutoSizeMode::Nearest mode with a 45-degree angle has been fixed.

auto gen = System::MakeObject<BarcodeGenerator>(EncodeTypes::QR, u"Hello world!");
gen->get_Parameters()->set_AutoSizeMode(Aspose::BarCode::Generation::AutoSizeMode::Nearest);
gen->get_Parameters()->set_RotationAngle(45.0f);
gen->get_Parameters()->get_ImageWidth()->set_Pixels(400.0f);
gen->get_Parameters()->get_ImageHeight()->set_Pixels(400.0f);
gen->Save(u"qr45.png", Aspose::BarCode::Generation::BarCodeImageFormat::Png);

Fixed Non-Informative Exception for SwissQR

The non-informative exception “System::NullReferenceException” for SwissQR has been resolved.

System::SharedPtr<SwissQRCodetext> swissQRCodetext = System::MakeObject<SwissQRCodetext>();
System::SharedPtr<SwissQRBill> swissQRBill = swissQRCodetext->get_Bill();
swissQRBill->set_Account(u"DE89370400440532013000");
swissQRBill->set_Amount(1000);
swissQRBill->set_Currency(u"CHF");
swissQRBill->set_Reference(u"210000000003139471430009017");
System::SharedPtr<Address> address = System::MakeObject<Address>();
address->set_Name(u"Creditor 1 Address");
swissQRBill->set_Creditor(address);

try
{
    System::SharedPtr<ComplexBarcodeGenerator> generator = System::MakeObject<ComplexBarcodeGenerator>(swissQRCodetext);
    generator->Save(u"SwissQRBill.png");
}
catch (System::Exception& ex)
{
    //"Creditor's CountryCode is a mandatory field and must be valid two-letter ISO country code."
    System::Console::WriteLine(ex->get_Message());
}