Aspose.BarCode for .NET 7.1.0 Release Notes

The list of improvements and changes in Aspose.BarCode .NET as follows:

The list of improvements and changes in Aspose.BarCode .NET as follows:

New Features

BARCODENET-33994 Review and include ECC000-140 algorithm into main project

Enhancements

BARCODENET-33156 Flag to indicate that a barcode is found but unreadable

BARCODENET-34220 The duplicate recognition of the datamatrix

BARCODENET-34206 Incorrect recognition when lines restoration is used

BARCODENET-34190 Incorrect barcode read type for SwissPostParcel filter

BARCODENET-34181 Incorrect recognition of Planet code from the tif image

BARCODENET-34180 Incorrect recognition of Planet code from the tif image

BARCODENET-34094 Can’t recognize Aztec code from the PDF document

BARCODENET-34093 Can’t recognize Aztec code from the PDF document

BARCODENET-33974 Can’t recognize DataMatrix code from the JPG image

BARCODENET-33938 Can’t recognize Code39 code from the tif file

BARCODENET-33892 Can’t recognize Code39 barcodes from the PDF document

BARCODENET-33856 SSCC18 symbology, check digit should be in parenthesis

BARCODENET-33853 Error message when tried to encode Code128 with FNC 3 character

BARCODENET-33804 Incorrect recognition of DataMatrix code from a PNG file

BARCODENET-33544 Incorrect Or Unable to recognize bar codes from a PDF file format

BARCODENET-33536 Aspose is compatible with ECC 000 - 140 and ECC 200

Exceptions

BARCODENET-34204 Correct the GetRegion function for DatabarExpandedStacked

Usage examples:

The flag indicating that an unreadable barcode has been detected on the image

Code sample:

Bitmap lOrigBmp = new Bitmap(

"Path to File"

);

BarCodeReader reader = new BarCodeReader(lOrigBmp);

reader.SetBarCodeReadType(BarCodeReadType.QR);

//1.method max barcodes mode

reader.RecognitionMode = RecognitionMode.MaxBarCodes;

//2.method manual hints mode

//reader.RecognitionMode = RecognitionMode.ManualHints;

//reader.ManualHints = ManualHint.IncorrectBarcodes;

while (reader.Read())

{

bool isFake = reader.GetIsDeniable();

string lStr = reader.GetReadType().ToString() +

" IsFake:"

\+ isFake.ToString() +

" CodeText:"

\+ reader.GetCodeText();

MessageBox.Show(lStr);

}

lOrigBmp.Dispose();

Another sample:




string filename = @

"G:\prj\aspose\Barcode.Net\testdata\Issues\Issue34189\skipped2.png"

;

using (BarCodeReader reader = new BarCodeReader(filename, BarCodeReadType.Code128))

{

reader.RecognitionMode = RecognitionMode.MaxBarCodes;

while (reader.Read()){

          Console.WriteLine(reader.GetReadType() +

": "

\+ reader.GetCodeText());

          Console.WriteLine(

"IsDeniable: "

\+ reader.GetIsDeniable());

      }

}

Result:

Code128: A;000000014941 IsDeniable: True

Review and include  ECC000-140 algorithm into main project

Code sample:


// Generate

BarCodeBuilder builder1 = new BarCodeBuilder();

builder1.SymbologyType = Symbology.DataMatrix;

builder1.DatamatrixEcc = DataMatrixEccType.Ecc050;

builder1.CodeText =

"BASE-41 ONLY ALPHA, DIGITS AND PUNCTUATION."

;

builder1.Save(

"Barcode1.png"

);

BarCodeBuilder builder2 = new BarCodeBuilder();

builder2.SymbologyType = Symbology.DataMatrix;

builder2.DatamatrixEcc = DataMatrixEccType.Ecc050;

builder2.CodeText =

"ASCII encodes first 128 chars."

;

builder2.Save(

"Barcode2.png"

);

// Recognize

using (BarCodeReader reader = new BarCodeReader(

"Barcode1.png"

, BarCodeReadType.DataMatrix))

{

while (reader.Read()){

		Console.WriteLine(

"Barcode1.png:  "

\+ reader.GetCodeText());

	}

}

using (BarCodeReader reader = new BarCodeReader(

"Barcode2.png"

, BarCodeReadType.DataMatrix))

{

while (reader.Read()){

		Console.WriteLine(

"Barcode2.png:  "

\+ reader.GetCodeText());

	}

}

Result:

Barcode1.png: BASE-41 ONLY ALPHA, DIGITS AND PUNCTUATION. Barcode2.png: ASCII encodes first 128 chars.

The duplicate recognition of the datamatrix

Code sample:

string filename = @

"Page5.png"

;

using (BarCodeReader reader = new BarCodeReader(filename, BarCodeReadType.DataMatrix))

{

while (reader.Read())

{

Console.WriteLine(reader.GetReadType() +

": "

\+ reader.GetCodeText());

for (int i = 0; i < reader.GetRegion().Points.Length; i++){

			Console.WriteLine(reader.GetRegion().Points[i]);

		}

}

}

Result:

DataMatrix: GAC2014-997002

{X=1826,Y=948}

{X=1721,Y=948}

{X=1826,Y=1048}

{X=1721,Y=1048}

Recognition when lines restoration is used

Code sample:

string filename = @

"C:\prj\Aspose\Project\testdata\Issues\Issue34206\33453_Image+1.TIF"

;

using (BarCodeReader reader = new BarCodeReader(filename, BarCodeReadType.Code128))

{

reader.RecognitionMode = RecognitionMode.MaxQuality;

while (reader.Read()){

		Console.WriteLine(reader.GetReadType() +

": "

\+ reader.GetCodeText());

	}

}


using (BarCodeReader reader = new BarCodeReader(filename, BarCodeReadType.Code128))

{

reader.ImageBinarizationHints = RecognitionHints.ImageBinarization.LineCodesRestoration;

while (reader.Read()){

		Console.WriteLine(reader.GetReadType() +

": "

\+ reader.GetCodeText());

	}

}

Result:

Code128: H00123192899A

Barcode read type for SwissPostParcel filter

Code sample

string filename = @

"C:\Users\oygan\Downloads\BARCODENET-34190\SwissPostParcel.png"

;

using (BarCodeReader reader = new BarCodeReader(filename, BarCodeReadType.SwissPostParcel))

{

while (reader.Read()){

		Console.WriteLine(reader.GetReadType() +

": "

\+ reader.GetCodeText());

	}

}

result:

SwissPostParcel: 994299671234561789

Recognize Aztec code from the PDF document

Code sample

string filename = @

"G:\prj\aspose\Barcode.Net\testdata\Issues\Issue34093\Page7.png"

;

using (BarCodeReader reader = new BarCodeReader(filename, BarCodeReadType.Aztec))

{

//reader.RecognitionMode = RecognitionMode.MaxBarCodes;

while (reader.Read()){

		Console.WriteLine(reader.GetReadType() +

": "

\+ reader.GetCodeText());

	}

}

result:


result:

Aztec: Gomaro Aztec [http://www.gomaro.ch/Code_Aztec.htm]

Recognize DataMatrix code from the JPG image

Matrix is inverted.


Matrix is inverted.


Code sample:

BarCodeReader reader = new BarCodeReader(@

"C:\Users\DNS\Downloads\BARCODENET-33974\DataMatrix_1.jpg"

, BarCodeReadType.DataMatrix);

reader.RecognitionMode = RecognitionMode.ManualHints;

reader.ManualHints = ManualHint.InvertImage;

while (reader.Read())

{

Console.WriteLine(

"Type: "

\+ reader.GetReadType() +

"  Code: "

\+ reader.GetCodeText());

}

reader.Close();

result:

Type: DataMatrix  Code: UMT471120001047

Recognize Code39 code from the tif file

Code sample


string filename = @

"G:\prj\aspose\Barcode.Net\testdata\Issues\Issues33938\3.tif"

;

using (BarCodeReader reader = new BarCodeReader(filename, BarCodeReadType.Code39Standard \| BarCodeReadType.QR))

{

//reader.RecognitionMode = RecognitionMode.MaxBarCodes;

while (reader.Read()){

		Console.WriteLine(reader.GetReadType() +

": "

\+ reader.GetCodeText());

	}

}

result:

Code39Standard: SEPARATOR

QR: CapitalStream Document ID: 3372291970265819248, Coversheet Indicator: Y, Document Source System: CS

Recognize Code39 barcodes from the PDF document

Code sample


string filename = @

"G:\prj\aspose\Barcode.Net\testdata\Issues\Issue33892\Page1.png"

;

using (BarCodeReader reader = new BarCodeReader(filename, BarCodeReadType.Code39Extended \| BarCodeReadType.Code39Standard))

{

while (reader.Read()){

		Console.WriteLine(reader.GetReadType() +

": "

\+ reader.GetCodeText());

	}

}

result:

Code39Standard: BA2479046

Code39Extended: BA2479046aR0002      \+04202013+03202013

Error message when tried to encode Code128 with FNC 3 character

Code sample:

BarCodeBuilder builder = new BarCodeBuilder();

char FNC3 = Convert.ToChar(201);

builder.CodeText = FNC3 +

"1234567"

;

builder.SymbologyType = Symbology.Code128;

MemoryStream code128 = new MemoryStream();

builder.Save(code128, BarCodeImageFormat.Png);

new Bitmap(code128).Save(

"code128.png"

);

Result:


picture"code128.png" is attached.

Recognition of DataMatrix code from a PNG file

Code sample


string filename = @

"G:\prj\aspose\Barcode.Net\testdata\Issues\Issue33804\false_positive.png"

;

using (BarCodeReader reader = new BarCodeReader(filename, BarCodeReadType.DataMatrix))

{

while (reader.Read()){

		Console.WriteLine(reader.GetReadType() +

": "

\+ reader.GetCodeText());

	}

}

result:

DataMatrix: E200A05B520086C93E11BCA863028B412

Recognize bar codes from a PDF file format

Code sample:

for (int i = 1; i <= 8; i++)

{

string filePath = @

"C:\AB\test84\imgs\Page"

\+ i + png";

using (BarCodeReader reader = new BarCodeReader(filePath, BarCodeReadType.DataMatrix))

{

if (i >= 2 && i <= 5)

reader.RecognitionMode = RecognitionMode.MaxQuality;

while (reader.Read()){

			Console.WriteLine(Path.GetFileName(filePath) +

" -- Symbol: "

\+ reader.GetReadType() +

" Code:  "

\+ reader.GetCodeText());

		}

}

}

Result:


Page1.png -- Symbol: DataMatrix Code:  :AAAB7DWG0TzWBA

Page2.png -- Symbol: DataMatrix Code:  :AAAB7DWG0TzWBA

Page3.png -- Symbol: DataMatrix Code:  :AAAB7DWG0TzWBA

Page4.png -- Symbol: DataMatrix Code:  :AAAB7DWG0TzWBA

Page5.png -- Symbol: DataMatrix Code:  :AAAB7DWG0TzWBA

Page5.png -- Symbol: DataMatrix Code:  (p1:AAAB7DWG0TzWBA)SA20130514a\|X:60;Opt:OR;COESA:0%;AP:ApAct;U:UK;COEGL:0%;PV:PI;RG:RUC;CST:None;ACLim:AEMP;YY:IMS-EILP

Page6.png -- Symbol: DataMatrix Code:  :AAAB7DNGiKyRNg

Page7.png -- Symbol: DataMatrix Code:  :AAAB7DNGiKyRNg

Page8.png -- Symbol: DataMatrix Code:  (p1:AAAB7DNGiKyRNg)SA20130514a\|X:60;Opt:OR;COESA:0%;AP:ApAct;U:UK;COEGL:0%;PV:PI;RG:RUC;CST:None;ACLim:AEMP;YY:IMS-EILP

Page8.png -- Symbol: DataMatrix Code:  :AAAB7DNGiKyRNg

Correct the GetRegion function for DatabarExpandedStacked

Supported GetRegion function for the all "stacked" databars


Code sample

string filename = @

"G:\prj\aspose\Barcode.Net\testdata\Issues\Issue34204\DatabarExpandedSTacked.png"

;

using (BarCodeReader reader = new BarCodeReader(filename))

{

while (reader.Read())

{

Console.WriteLine(reader.GetReadType() +

": "

\+ reader.GetCodeText());

for (int i = 0; i < reader.GetRegion().Points.Length; i++)

{			Console.WriteLine(reader.GetRegion().Points[i]);		}

}

}

filename = @

"G:\prj\aspose\Barcode.Net\testdata\Issues\Issue34204\DatabarStacked.png"

;

using (BarCodeReader reader = new BarCodeReader(filename))

{

while (reader.Read())

{

Console.WriteLine(reader.GetReadType() +

": "

\+ reader.GetCodeText());

for (int i = 0; i < reader.GetRegion().Points.Length; i++){

			Console.WriteLine(reader.GetRegion().Points[i]);

		}

}

}

result:


DatabarExpandedStacked: (01)95012345678903(3103)000123

{X=0,Y=0}

{X=203,Y=0}

{X=203,Y=141}

{X=0,Y=141}

DatabarStackedOmniDirectional: (01)2401234567890

{X=16,Y=16}

{X=117,Y=16}

{X=117,Y=42}

{X=16,Y=42}