Browse our Products
Aspose.BarCode for .NET 6.9.0 Release Notes
The following is a list of improvements and changes in this release of Aspose.BarCode.
New features:
BARCODENET-33954 Implement recognition rotated DataMatrix
BARCODENET-34054 Add support of Micro PDF417 code
BARCODENET-34060 Add decoding support of Micro QR code
BARCODENET-34124 Implement restructuring filters API
BARCODENET-34154 Add .NET 3.5 Client Profile version
BARCODENET-25063 Is it possible to generate a barcode like the attached image?
Enhancements:
BARCODENET-34077 QR/Micro QR - encode/decode improvements
BARCODENET-22846 Code39 barcode could not be recognized from a scanned image
BARCODENET-33657 Unable to recognize Datamatrix bar codes from PNG files
BARCODENET-33810 Can’t recognize DataMatrix code from png image
BARCODENET-33830 Can’t recognize Code128 and DataMatrix codes in a single way
BARCODENET-33831 Can’t recognize DataMatric code from a tif file
BARCODENET-33836 Can’t recognize all DataMatrix codes from a tif file
BARCODENET-33839 Can’t recognize all DataMatrix codes from a tif file
BARCODENET-33840 Can’t recognize any DataMatrix code from a tif file
BARCODENET-33844 Can’t recognize all DataMatrix codes from a tif file
BARCODENET-33846 Can’t recognize QR code from jpg image
BARCODENET-33855 Can’t recognize QR code from jpg image without orientation angle
BARCODENET-33857 Incorrect recognition of the QR code from PNG image
BARCODENET-33919 Can’t create Code128 barcode with standard ‘f’ character
BARCODENET-33984 Can’t recognize QR code from the TIF image
BARCODENET-34003 Can’t recognize all QR codes from the JPG image
BARCODENET-34017 Recognizing two Code128 codes instead of one
BARCODENET-34045 Add support of GS1 Databar coupon code generation
BARCODENET-34063 Spell mistake in XML of Aspose.BarCode API
BARCODENET-34068 Incorrect recognition of Pdf417 code from the tif image
BARCODENET-34070 Can’t recognize QR code without Orientation Hints settings
BARCODENET-34080 Can’t recognize DataMatrix code from the TIF file
BARCODENET-34084 Incorrect recognition of Code128 code from the tif image
BARCODENET-34092 Can’t recognize a QR code from PDF document
BARCODENET-34096 Optimize the speed of recognition from the multipage tiff file format
BARCODENET-34099 Incorrect encoding punctuaion in PDF417 and MicroPDF417 barcodes
BARCODENET-34104 Incorrect recognition of Code128 code from the tif image
BARCODENET-34105 Incorrect recognition of Code128 code from the tif image
BARCODENET-34106 Incorrect recognition of Code128 code from the tif image
BARCODENET-34107 Incorrect recognition of Code128 code from the tif image
BARCODENET-34108 Incorrect recognition of Code128 code from the tif image
BARCODENET-34109 Can’t recognize Ean13 code from the JPG image
BARCODENET-34112 Can’t recognize Code39 code form the PDF document
BARCODENET-34113 Can’t recognize PDF417 codeS from the PDF document
BARCODENET-34115 Can’t recognize QR codes using error correction level
BARCODENET-34121 ?ode128 recognizer confuses f and “FNC1”.
BARCODENET-34122 Can’t recognize QR code from a JPG file
BARCODENET-34136 Public API changes with new QR/MicroQR decoder
BARCODENET-34137 Fake recognition of MicroPdf417
BARCODENET-34153 Extra letters in codetext when checksum off
Exceptions:
BARCODENET-33990 Index out of range error message while generating a Code128 symbology
BARCODENET-34149 Stack overflow error while reading Code128 code from the tif image
Public API changes:
BARCODENET-25063 Is it possible to generate a barcode like the attached image?
Added new property FilledBars for BarCodeBuilder for generating filled or notfilled bars. This property works only with 1D barcodes. Default value is true (filled).
The following is an example of the new API usage:
using (BarCodeBuilder builder =
new
BarCodeBuilder(
"TEXT"
, Symbology.Code128))
{
builder.FilledBars =
false
;
builder.Save(fileName);
}
Result:
BARCODENET-34054 Add support of Micro PDF417 code
Added support new symbology for generation - Micro PDF417.
The following is an example of the new API usage:
string codetext =
"12345"
;
using (BarCodeBuilder builder =
new
BarCodeBuilder(codetext, Symbology.MicroPdf417))
builder.Save(codetext +
".png"
);
Result:
BARCODENET-34128 Implement ManualHints mode
Added new API:
Property Aspose.BarCodeRecognition.BarCodeReader.ManualHints
Class Aspose.BarCodeRecognition.ManualHint
Field/Enum Aspose.BarCodeRecognition.ManualHint.None
Field/Enum Aspose.BarCodeRecognition.ManualHint.InvertImage
Field/Enum Aspose.BarCodeRecognition.ManualHint.IncorrectBarcodes
Field/Enum Aspose.BarCodeRecognition.ManualHint.ComplexBackground
Allows you to configure options of recognition accuracy and speed manually. You need to change the property "RecognitionMode" to "RecognitionMode.ManualHints". Default value is None.
ManualHint.None - There are no heavy recognition algorithms. The fastest recognition algorithms are used there, however if image is noisy recognition will fail. Used by default.
ManualHint.InvertImage - Use when image is white on black background. Typically BarCode images are white on black background
ManualHint.IncorrectBarcodes - Addition algorithms are included to recognize incorrectly generated or damaged barcodes (skipped bars, stop symbol, etc).
ManualHint.ComplexBackground - Analyzes barcode background. Useful with complex or colored backgrounds.
reader.RecognitionMode = RecognitionMode.ManualHints;
reader.ManualHints = ManualHint.InvertImage\| ManualHint.IncorrectBarcodes;
BARCODENET-34124 Implement restructuring filters API
New API:
Property Aspose.BarCodeRecognition.BarCodeReader.RecognitionMode
Class Aspose.BarCodeRecognition.RecognitionMode
Field/Enum Aspose.BarCodeRecognition.RecognitionMode.MaxPerformance
Field/Enum Aspose.BarCodeRecognition.RecognitionMode.MaxQuality
Field/Enum Aspose.BarCodeRecognition.RecognitionMode.MaxBarCodes
Field/Enum Aspose.BarCodeRecognition.RecognitionMode.ManualHints
BarCodeReader.RecognitionMode allows to quickly set up and tune the processing speed and quality in a way which is the most appropriate for you needs. Default value is MaxPerformance.
RecognitionMode.MaxPerformance - finds all the possible good and average quality barcodes. Uses only the fastest algorithms. Enabled by default.
RecognitionMode.MaxQuality - finds all the possible barcodes with good or bad quality. Doesn't return potential barcodes. Uses different fast and slow algorithms.
RecognitionMode.MaxBarCodes - extends MaxQuality. Finds even potential barcodes. Uses extra algorithms which may recognize incorrect barcodes, barcodes on complex background, noisy or damaged barcodes and etc. You may observe extra spurious barcodes.
RecognitionMode.ManualHints - user configures hints optionally. Allows you to adjust the balance between speed and quality manually.
using (BarCodeReader reader =
new
BarCodeReader(
"differentBarcodes.png"
))
{
reader.RecognitionMode = RecognitionMode.MaxQuality;
while
(reader.Read()){
Console.WriteLine(
"codetext: "
\+ reader.GetCodeText() +
"; type: "
\+ reader.GetReadType());
}
}
BARCODENET-34060 Add decoding support of Micro QR code
New API:
Field/Enum Aspose.BarCodeRecognition.BarCodeReadType.MicroQR
Added support for Micro QR recognition.
BarCodeReader reader =
new
BarCodeReader(fileName, BarCodeReadType.MicroQR);
reader.Read();
string res = reader.GetCodeText();
reader.Close();
BARCODENET-34136 Public API changes with new QR/MicroQR decoder
New API:
Method Aspose.BarCodeRecognition.BarCodeReader.GetDetectEncoding
Method Aspose.BarCodeRecognition.BarCodeReader.SetDetectEncoding(System.Boolean)
In case the flag is enabled the barcode engine returns Unicode text while tries to detect the encoding of the barcode. The barcode may be encoded using one of the following encodings:
UTF8
BOM_UTF8
BOM_UTF16BE
BOM_UTF16LE
The flag is enabled by default. In case the flag is disabled the engine returns plain text without encoding detection.
The flag works for QR/Micro QR at the moment.
MemoryStream ms =
new
MemoryStream();
using (BarCodeBuilder bb =
new
BarCodeBuilder())
{
bb.CodeText =
"?????"
;
bb.SymbologyType = Symbology.QR;
bb.CodeTextEncoding = Encoding.UTF8;
bb.Save(ms, BarCodeImageFormat.Png);
}
using (BarCodeReader reader =
new
BarCodeReader(ms, BarCodeReadType.QR))
{
reader.SetDetectEncoding(
true
);
if
(reader.Read())
Console.WriteLine(reader.GetCodeText()));
// "?????"
}
MemoryStream ms =
new
MemoryStream();
using (BarCodeBuilder bb =
new
BarCodeBuilder())
{
bb.CodeText =
"?????"
;
bb.SymbologyType = Symbology.QR;
bb.CodeTextEncoding = Encoding.UTF8;
bb.Save(ms, BarCodeImageFormat.Png);
}
using (BarCodeReader reader =
new
BarCodeReader(ms, BarCodeReadType.QR))
{
reader.SetDetectEncoding(
false
);
if
(reader.Read())
Console.WriteLine(reader.GetCodeText(Encoding.UTF8));
// "?????"
}