Ax.barcode.Scanner lets you scan PDF and image files to find a barcode and retrieve its value.
1 Barcode examples
1.1 Image barcode
For the following examples we will use an image file containing a PDF417 barcode with Base64 encoding.
function getImageBarcode() { var graph = new Ax.barcode.PDF417("ABCabc123"); var barcode = graph.toPNG(); // Uncomment these to rotate the barcode 90º: /* var image = new Ax.image.Image(barcode); image.rotate('CW_90'); var barcode = image.getBytes(); */ return barcode; } var bytes = getImageBarcode(); return Ax.util.Base64.encode(bytes);
iVBORw0KGgoAAAANSUhEUgAAAFYAAAAtCAIAAAC70QuiAAAERUlEQVR4Xo2NUY7jUAzDev9LdxcQQNCyk6k+jGeaSj6fh3y/3z2TF21fC26/riesueWEkxNux6TkkbIzd20LdS24/bqesOaWE05OuB2TkkfKzty1LdS14PbresKaW044OeF2TEoeKTtz107hXCs4TPiPld1idezzhpQ8Unbmrp3CuVZwmPAfK7vF6tjnDSl5pOzMXTuFc63gMOE/VnaL1bHPG1LySNmZrm3BQT4rQE5kX5k+bb84CbdjUvJI2ZmubcFBPitATmRfmT5tvzgJt2NS8kjZma5twUE+K0BOZF+ZPm2/OAm3Y1LySNmZZ81O5TztL/tEtmzNa8iGCV/AMSl5pOzMs2ancp72l30iW7bmNWTDhC/gmJQ8UnbmWbNTOU/7yz6RLVvzGrJhwhdwTEoeKTvTNZ8gzq64BcQB8qiKiZ1aK9RxTEoeKTvTNZ8gzq64BcQB8qiKiZ1aK9RxTEoeKTvTNZ8gzq64BcQB8qiKiZ1aK9RxTEoeKTvzrNmBWP6l4pVinZ6+k8e+JnRxTEoeKTvzrNmBWP6l4pVinZ6+k8e+JnRxTEoeKTvzrNmBWP6l4pVinZ6+k8e+JnRxTEoeKTvTtfNDtRZxpbhXm1zrxNuBO+F2TEoeKTvTtfNDtRZxpbhXm1zrxNuBO+F2TEoeKTvTtfNDtRZxpbhXm1zrxNuBO+F2TEoeKTvzqVYftXNW7FdlQ04Ozrk6fATHpOSRsjOfavVRO2fFflU25OTgnKvDR3BMSh4pO/OpVh+1c1bsV2VDTg7OuTp8BMek5JGyM1++sj+Hb5l3kd0yDOd6wl1JtmNS8kjZmS9f2Z/Dt8y7yG4ZhnM94a4k2zEpeaTszJev7M/hW+ZdZLcMw7mecFeS7ZiUPFJ25vmVvN3ibYGTIeSlYvKyQirhdkxKHik78/xK3m7xtsDJEPJSMXlZIZVwOyYlj5SdeX4lb7d4W+BkCHmpmLyskEq4HZOSR8rOdO38EI6veVfsMOvEekLWvH11XOcNKXmk7EzXzg/h+Jp3xQ6zTqwnZM3bV8d13pCSR8rOdO38EI6veVfsMOvEekLWvH11XOcNKXmk7EzXNvSV7IpDMdMpM0KmBd5n5XO1TEoeKTvTtQ19JbviUMx0yoyQaYH3WflcLZOSR8rOdG1DX8muOBQznTIjZFrgfVY+V8uk5JGyM8+v/MmBnPjFuQKZhi8k70q4fZOSR8rOPL/yJwdy4hfnCmQavpC8K+H2TUoeKTvz/MqfHMiJX5wrkGn4QvKuhNs3KXmk7Mxd2yfeXutTFZxzDYH7bZh1p7QiJY+Unblr+8Tba32qgnOuIXC/DbPulFak5JGyM3dtn3h7rU9VcM41BO63Ydad0oqUPFJ25q7V6en67pifswKs73gl9nlDSh4pO3PX6vR0fXfMz1kB1ne8Evu8ISWPlJ25a3V6ur475uesAOs7Xol93pD/j399kbhTz/VjxQAAAABJRU5ErkJggg==
1.2 PDF barcode
We will also use a PDF file containing the previous image.
function getPDFBarcode() { var barcode = getImageBarcode() //Previous example var root = new Ax.fop.DocumentBuilder().createDocument(21, 30, 0, 0, 0, 0); root.setDebug(""); root.getSimplePageMaster().setMargins(0.5, 0.5, 0.5, 0.5); var flow = root.getBodyFlow(); flow.addBlock().setTextAlign("center").setPaddingAfter(5).build(c => { c.addBlock().build(logoBlock => { logoBlock.addExternalGraphic(barcode).setContentWidth(4.0).setVerticalAlign("middle"); logoBlock.addText("HELLOW").setFontWeight("bold"); }); }); var fop = root.toFOP(); console.log(fop); let pdf = new Ax.fop.Processor().transform(fop); return pdf; } var bytes = getPDFBarcode(); return Ax.util.Base64.encode(bytes);
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YW0KZW5kb2JqCjMgMCBvYmoKMjQ3MgplbmRvYmoKNCAwIG9iagpbL0lDQ0Jhc2VkIDIgMCBSXQplbmRvYmoKNSAwIG9iago8PAogIC9UeXBlIC9NZXRhZGF0YQogIC9TdWJ0eXBlIC9YTUwKICAvTGVuZ3RoIDYgMCBSCj4+CnN0cmVhbQo8P3hwYWNrZXQgYmVnaW49Iu+7vyIgaWQ9Ilc1TTBNcENlaGlIenJlU3pOVGN6a2M5ZCI/Pjx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iPgo8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPgo8cmRmOkRlc2NyaXB0aW9uIHhtbG5zOmRjPSJodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVudHMvMS4xLyIgcmRmOmFib3V0PSIiPgo8ZGM6Zm9ybWF0PmFwcGxpY2F0aW9uL3BkZjwvZGM6Zm9ybWF0Pgo8ZGM6bGFuZ3VhZ2U+eC11bmtub3duPC9kYzpsYW5ndWFnZT4KPGRjOmRhdGU+MjAyMS0wMi0wOVQwOToxODo0NyswMTowMDwvZGM6ZGF0ZT4KPC9yZGY6RGVzY3JpcHRpb24+CjxyZGY6RGVzY3JpcHRpb24geG1sbnM6cGRmPSJodHRwOi8vbnMuYWRvYmUuY29tL3BkZi8xLjMvIiByZGY6YWJvdXQ9IiI+CjxwZGY6UHJvZHVjZXI+QXBhY2hlIEZPUCBWZXJzaW9uIDAuMC4yMzI8L3BkZjpQcm9kdWNlcj4KPHBkZjpQREZWZXJzaW9uPjEuNDwvcGRmOlBERlZlcnNpb24+CjwvcmRmOkRlc2NyaXB0aW9uPgo8cmRmOkRlc2NyaXB0aW9uIHhtbG5zOnhtcD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLyIgcmRmOmFib3V0PSIiPgo8eG1wOkNyZWF0b3JUb29sPkFwYWNoZSBGT1AgVmVyc2lvbiAwLjAuMjMyPC94bXA6Q3JlYXRvclRvb2w+Cjx4bXA6TWV0YWRhdGFEYXRlPjIwMjEtMDItMDlUMDk6MTg6NDcrMDE6MDA8L3htcDpNZXRhZGF0YURhdGU+Cjx4bXA6Q3JlYXRlRGF0ZT4yMDIxLTAyLTA5VDA5OjE4OjQ3KzAxOjAwPC94bXA6Q3JlYXRlRGF0ZT4KPC9yZGY6RGVzY3JpcHRpb24+CjwvcmRmOlJERj4KPC94OnhtcG1ldGE+PD94cGFja2V0IGVuZD0iciI/PgoKZW5kc3RyZWFtCmVuZG9iago2IDAgb2JqCjg3MwplbmRvYmoKNyAwIG9iago8PAogIC9OYW1lIC9JbTEKICAvVHlwZSAvWE9iamVjdAogIC9MZW5ndGggOCAwIFIKICAvRmlsdGVyIC9GbGF0ZURlY29kZQogIC9TdWJ0eXBlIC9JbWFnZQogIC9XaWR0aCA4NgogIC9IZWlnaHQgNDUKICAvQml0c1BlckNvbXBvbmVudCA4CiAgL0NvbG9yU3BhY2UgWy9JQ0NCYXNlZCAyIDAgUl0KPj4Kc3RyZWFtCnic7ZFLDgMhDEO5/6XpolJF4w+oGtKNWYwEiWPnzRj8zDnx+z6mDavl0Q+cyzFJsBmtUf7pUWlDIASeIrAamWzbvbYSVIVACDQTUCuURaikhKFC5Y6/wEALgRC4SoB2npQMOgMNJ6DQLxICIfA4Acw2vw9KqLtS0SRFQq8hEAJtBE4SYklJ1iu6+Dl+nRAIgXsE6BwankrKO84xFmW4+jUhEAK3CSgXGvIwlYpKHbcuIRACVwngELpmkVB5ESrONPb214RACPQQwEiKgNoRS8ZFXUMgBJoJqDm4gjLCPFjaGimkIRAC/QTMTJQYlwJwu8sAkiEQAm0EVGb6rnzpLn4adiLnEAiBHgJ+Pl7LKPRa389dKI0QCIH/ElBV30PjUSESKF4hEAI/EHgBkjK4UwplbmRzdHJlYW0KZW5kb2JqCjggMCBvYmoKMzAzCmVuZG9iago5IDAgb2JqCjw8IC9MZW5ndGggMTAgMCBSIC9GaWx0ZXIgL0ZsYXRlRGVjb2RlID4+CnN0cmVhbQp4nHVPvQrCQAze7yky6mCaXHrXyypWVApSOHAQJ0GnIn3/xdS2KAW5IVy+fH+9YyB7m2GkQCgqcO9cP+0ZuESuZB4GtQZ+CMPFtE4S0fsZ/Us1iAXFfMiPtkFRfFJVYFVkikQCkVArHQjFsWPYvUyV4Om22RV70/OQH9/cwh5LJdVK7FNioGh6WkHu4LqCQ90058v6Bvnk6jyl57FwSGyeflFuEf+3W+veudU8bgplbmRzdHJlYW0KZW5kb2JqCjEwIDAgb2JqCjE3MwplbmRvYmoKMTEgMCBvYmoKPDwKICAvUmVzb3VyY2VzIDEyIDAgUgogIC9UeXBlIC9QYWdlCiAgL01lZGlhQm94IFswIDAgNTk1LjI3NSA4NTAuMzkzXQogIC9Dcm9wQm94IFswIDAgNTk1LjI3NSA4NTAuMzkzXQogIC9CbGVlZEJveCBbMCAwIDU5NS4yNzUgODUwLjM5M10KICAvVHJpbUJveCBbMCAwIDU5NS4yNzUgODUwLjM5M10KICAvUGFyZW50IDEzIDAgUgogIC9Db250ZW50cyA5IDAgUgo+PgplbmRvYmoKMTQgMCBvYmoKPDwKICAvVHlwZSAvRm9udAogIC9TdWJ0eXBlIC9UeXBlMQogIC9CYXNlRm9udCAvSGVsdmV0aWNhLUJvbGQKICAvRW5jb2RpbmcgL1dpbkFuc2lFbmNvZGluZwo+PgplbmRvYmoKMTMgMCBvYmoKPDwgL1R5cGUgL1BhZ2VzCi9Db3VudCAxCi9LaWRzIFsxMSAwIFIgXSA+PgplbmRvYmoKMTUgMCBvYmoKPDwKICAvVHlwZSAvQ2F0YWxvZwogIC9QYWdlcyAxMyAwIFIKICAvTGFuZyAoeC11bmtub3duKQogIC9NZXRhZGF0YSA1IDAgUgogIC9QYWdlTGFiZWxzIDE2IDAgUgo+PgplbmRvYmoKMTIgMCBvYmoKPDwKICAvRm9udCA8PCAvRjMgMTQgMCBSID4+CiAgL1Byb2NTZXQgWy9QREYgL0ltYWdlQiAvSW1hZ2VDIC9UZXh0XQogIC9YT2JqZWN0IDw8IC9JbTEgNyAwIFIgPj4KICAvQ29sb3JTcGFjZSA8PCAvRGVmYXVsdFJHQiA0IDAgUiA+Pgo+PgplbmRvYmoKMTYgMCBvYmoKPDwgL051bXMgWzAgPDwgL1MgL0QgPj5dID4+CmVuZG9iagp4cmVmCjAgMTcKMDAwMDAwMDAwMCA2NTUzNSBmIAowMDAwMDAwMDE1IDAwMDAwIG4gCjAwMDAwMDAxNTMgMDAwMDAgbiAKMDAwMDAwMjcxMCAwMDAwMCBuIAowMDAwMDAyNzMwIDAwMDAwIG4gCjAwMDAwMDI3NjMgMDAwMDAgbiAKMDAwMDAwMzcyNSAwMDAwMCBuIAowMDAwMDAzNzQ0IDAwMDAwIG4gCjAwMDAwMDQyNTIgMDAwMDAgbiAKMDAwMDAwNDI3MSAwMDAwMCBuIAowMDAwMDA0NTE5IDAwMDAwIG4gCjAwMDAwMDQ1MzkgMDAwMDAgbiAKMDAwMDAwNTA0OSAwMDAwMCBuIAowMDAwMDA0ODc1IDAwMDAwIG4gCjAwMDAwMDQ3NjQgMDAwMDAgbiAKMDAwMDAwNDkzNSAwMDAwMCBuIAowMDAwMDA1MjAyIDAwMDAwIG4gCnRyYWlsZXIKPDwKICAvUm9vdCAxNSAwIFIKICAvSW5mbyAxIDAgUgogIC9JRCBbPDgxMkNFOTQxOEEwMEFFMkM3QjM2NTY1RTBCNUU4QzdDPiA8ODEyQ0U5NDE4QTAwQUUyQzdCMzY1NjVFMEI1RThDN0M+XQogIC9TaXplIDE3Cj4+CnN0YXJ0eHJlZgo1MjQ2CiUlRU9GCg==
2 Scanner
The default constructor is:
var scanner = new Ax.barcode.Scanner();
2.1 Scanning
As mentioned before, the Scanner is able to find barcodes in both image and PDF files.
Its usage is the following:
var file = 'iVBORw0KGgoAAAANSUhEUgAAAFYAAAAtCAIAAAC70QuiAAAERUlEQVR4Xo2NUY7jUAzDev9LdxcQQNCyk6k+jGeaSj6fh3y/3z2TF21fC26/riesueWEkxNux6TkkbIzd20LdS24/bqesOaWE05OuB2TkkfKzty1LdS14PbresKaW044OeF2TEoeKTtz107hXCs4TPiPld1idezzhpQ8Unbmrp3CuVZwmPAfK7vF6tjnDSl5pOzMXTuFc63gMOE/VnaL1bHPG1LySNmZrm3BQT4rQE5kX5k+bb84CbdjUvJI2ZmubcFBPitATmRfmT5tvzgJt2NS8kjZma5twUE+K0BOZF+ZPm2/OAm3Y1LySNmZZ81O5TztL/tEtmzNa8iGCV/AMSl5pOzMs2ancp72l30iW7bmNWTDhC/gmJQ8UnbmWbNTOU/7yz6RLVvzGrJhwhdwTEoeKTvTNZ8gzq64BcQB8qiKiZ1aK9RxTEoeKTvTNZ8gzq64BcQB8qiKiZ1aK9RxTEoeKTvTNZ8gzq64BcQB8qiKiZ1aK9RxTEoeKTvzrNmBWP6l4pVinZ6+k8e+JnRxTEoeKTvzrNmBWP6l4pVinZ6+k8e+JnRxTEoeKTvzrNmBWP6l4pVinZ6+k8e+JnRxTEoeKTvTtfNDtRZxpbhXm1zrxNuBO+F2TEoeKTvTtfNDtRZxpbhXm1zrxNuBO+F2TEoeKTvTtfNDtRZxpbhXm1zrxNuBO+F2TEoeKTvzqVYftXNW7FdlQ04Ozrk6fATHpOSRsjOfavVRO2fFflU25OTgnKvDR3BMSh4pO/OpVh+1c1bsV2VDTg7OuTp8BMek5JGyM1++sj+Hb5l3kd0yDOd6wl1JtmNS8kjZmS9f2Z/Dt8y7yG4ZhnM94a4k2zEpeaTszJev7M/hW+ZdZLcMw7mecFeS7ZiUPFJ25vmVvN3ibYGTIeSlYvKyQirhdkxKHik78/xK3m7xtsDJEPJSMXlZIZVwOyYlj5SdeX4lb7d4W+BkCHmpmLyskEq4HZOSR8rOdO38EI6veVfsMOvEekLWvH11XOcNKXmk7EzXzg/h+Jp3xQ6zTqwnZM3bV8d13pCSR8rOdO38EI6veVfsMOvEekLWvH11XOcNKXmk7EzXNvSV7IpDMdMpM0KmBd5n5XO1TEoeKTvTtQ19JbviUMx0yoyQaYH3WflcLZOSR8rOdG1DX8muOBQznTIjZFrgfVY+V8uk5JGyM8+v/MmBnPjFuQKZhi8k70q4fZOSR8rOPL/yJwdy4hfnCmQavpC8K+H2TUoeKTvz/MqfHMiJX5wrkGn4QvKuhNs3KXmk7Mxd2yfeXutTFZxzDYH7bZh1p7QiJY+Unblr+8Tba32qgnOuIXC/DbPulFak5JGyM3dtn3h7rU9VcM41BO63Ydad0oqUPFJ25q7V6en67pifswKs73gl9nlDSh4pO3PX6vR0fXfMz1kB1ne8Evu8ISWPlJ25a3V6ur475uesAOs7Xol93pD/j399kbhTz/VjxQAAAABJRU5ErkJggg=='; var bytes = Ax.util.Base64.decode(file); var scanner = new Ax.barcode.Scanner(); var result = scanner.scanImage(bytes); console.log(result);
ABCabc123
In case of a PDF file, the Scanner searches all the document's images, until the one with the barcode is successfully scanned and its value is returned.
If the PDF contains SVG elements those will not be scanned, as they are not detected as images.
var file = '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YW0KZW5kb2JqCjMgMCBvYmoKMjQ3MgplbmRvYmoKNCAwIG9iagpbL0lDQ0Jhc2VkIDIgMCBSXQplbmRvYmoKNSAwIG9iago8PAogIC9UeXBlIC9NZXRhZGF0YQogIC9TdWJ0eXBlIC9YTUwKICAvTGVuZ3RoIDYgMCBSCj4+CnN0cmVhbQo8P3hwYWNrZXQgYmVnaW49Iu+7vyIgaWQ9Ilc1TTBNcENlaGlIenJlU3pOVGN6a2M5ZCI/Pjx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iPgo8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPgo8cmRmOkRlc2NyaXB0aW9uIHhtbG5zOmRjPSJodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVudHMvMS4xLyIgcmRmOmFib3V0PSIiPgo8ZGM6Zm9ybWF0PmFwcGxpY2F0aW9uL3BkZjwvZGM6Zm9ybWF0Pgo8ZGM6bGFuZ3VhZ2U+eC11bmtub3duPC9kYzpsYW5ndWFnZT4KPGRjOmRhdGU+MjAyMS0wMi0wOVQwOToxODo0NyswMTowMDwvZGM6ZGF0ZT4KPC9yZGY6RGVzY3JpcHRpb24+CjxyZGY6RGVzY3JpcHRpb24geG1sbnM6cGRmPSJodHRwOi8vbnMuYWRvYmUuY29tL3BkZi8xLjMvIiByZGY6YWJvdXQ9IiI+CjxwZGY6UHJvZHVjZXI+QXBhY2hlIEZPUCBWZXJzaW9uIDAuMC4yMzI8L3BkZjpQcm9kdWNlcj4KPHBkZjpQREZWZXJzaW9uPjEuNDwvcGRmOlBERlZlcnNpb24+CjwvcmRmOkRlc2NyaXB0aW9uPgo8cmRmOkRlc2NyaXB0aW9uIHhtbG5zOnhtcD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLyIgcmRmOmFib3V0PSIiPgo8eG1wOkNyZWF0b3JUb29sPkFwYWNoZSBGT1AgVmVyc2lvbiAwLjAuMjMyPC94bXA6Q3JlYXRvclRvb2w+Cjx4bXA6TWV0YWRhdGFEYXRlPjIwMjEtMDItMDlUMDk6MTg6NDcrMDE6MDA8L3htcDpNZXRhZGF0YURhdGU+Cjx4bXA6Q3JlYXRlRGF0ZT4yMDIxLTAyLTA5VDA5OjE4OjQ3KzAxOjAwPC94bXA6Q3JlYXRlRGF0ZT4KPC9yZGY6RGVzY3JpcHRpb24+CjwvcmRmOlJERj4KPC94OnhtcG1ldGE+PD94cGFja2V0IGVuZD0iciI/PgoKZW5kc3RyZWFtCmVuZG9iago2IDAgb2JqCjg3MwplbmRvYmoKNyAwIG9iago8PAogIC9OYW1lIC9JbTEKICAvVHlwZSAvWE9iamVjdAogIC9MZW5ndGggOCAwIFIKICAvRmlsdGVyIC9GbGF0ZURlY29kZQogIC9TdWJ0eXBlIC9JbWFnZQogIC9XaWR0aCA4NgogIC9IZWlnaHQgNDUKICAvQml0c1BlckNvbXBvbmVudCA4CiAgL0NvbG9yU3BhY2UgWy9JQ0NCYXNlZCAyIDAgUl0KPj4Kc3RyZWFtCnic7ZFLDgMhDEO5/6XpolJF4w+oGtKNWYwEiWPnzRj8zDnx+z6mDavl0Q+cyzFJsBmtUf7pUWlDIASeIrAamWzbvbYSVIVACDQTUCuURaikhKFC5Y6/wEALgRC4SoB2npQMOgMNJ6DQLxICIfA4Acw2vw9KqLtS0SRFQq8hEAJtBE4SYklJ1iu6+Dl+nRAIgXsE6BwankrKO84xFmW4+jUhEAK3CSgXGvIwlYpKHbcuIRACVwngELpmkVB5ESrONPb214RACPQQwEiKgNoRS8ZFXUMgBJoJqDm4gjLCPFjaGimkIRAC/QTMTJQYlwJwu8sAkiEQAm0EVGb6rnzpLn4adiLnEAiBHgJ+Pl7LKPRa389dKI0QCIH/ElBV30PjUSESKF4hEAI/EHgBkjK4UwplbmRzdHJlYW0KZW5kb2JqCjggMCBvYmoKMzAzCmVuZG9iago5IDAgb2JqCjw8IC9MZW5ndGggMTAgMCBSIC9GaWx0ZXIgL0ZsYXRlRGVjb2RlID4+CnN0cmVhbQp4nHVPvQrCQAze7yky6mCaXHrXyypWVApSOHAQJ0GnIn3/xdS2KAW5IVy+fH+9YyB7m2GkQCgqcO9cP+0ZuESuZB4GtQZ+CMPFtE4S0fsZ/Us1iAXFfMiPtkFRfFJVYFVkikQCkVArHQjFsWPYvUyV4Om22RV70/OQH9/cwh5LJdVK7FNioGh6WkHu4LqCQ90058v6Bvnk6jyl57FwSGyeflFuEf+3W+veudU8bgplbmRzdHJlYW0KZW5kb2JqCjEwIDAgb2JqCjE3MwplbmRvYmoKMTEgMCBvYmoKPDwKICAvUmVzb3VyY2VzIDEyIDAgUgogIC9UeXBlIC9QYWdlCiAgL01lZGlhQm94IFswIDAgNTk1LjI3NSA4NTAuMzkzXQogIC9Dcm9wQm94IFswIDAgNTk1LjI3NSA4NTAuMzkzXQogIC9CbGVlZEJveCBbMCAwIDU5NS4yNzUgODUwLjM5M10KICAvVHJpbUJveCBbMCAwIDU5NS4yNzUgODUwLjM5M10KICAvUGFyZW50IDEzIDAgUgogIC9Db250ZW50cyA5IDAgUgo+PgplbmRvYmoKMTQgMCBvYmoKPDwKICAvVHlwZSAvRm9udAogIC9TdWJ0eXBlIC9UeXBlMQogIC9CYXNlRm9udCAvSGVsdmV0aWNhLUJvbGQKICAvRW5jb2RpbmcgL1dpbkFuc2lFbmNvZGluZwo+PgplbmRvYmoKMTMgMCBvYmoKPDwgL1R5cGUgL1BhZ2VzCi9Db3VudCAxCi9LaWRzIFsxMSAwIFIgXSA+PgplbmRvYmoKMTUgMCBvYmoKPDwKICAvVHlwZSAvQ2F0YWxvZwogIC9QYWdlcyAxMyAwIFIKICAvTGFuZyAoeC11bmtub3duKQogIC9NZXRhZGF0YSA1IDAgUgogIC9QYWdlTGFiZWxzIDE2IDAgUgo+PgplbmRvYmoKMTIgMCBvYmoKPDwKICAvRm9udCA8PCAvRjMgMTQgMCBSID4+CiAgL1Byb2NTZXQgWy9QREYgL0ltYWdlQiAvSW1hZ2VDIC9UZXh0XQogIC9YT2JqZWN0IDw8IC9JbTEgNyAwIFIgPj4KICAvQ29sb3JTcGFjZSA8PCAvRGVmYXVsdFJHQiA0IDAgUiA+Pgo+PgplbmRvYmoKMTYgMCBvYmoKPDwgL051bXMgWzAgPDwgL1MgL0QgPj5dID4+CmVuZG9iagp4cmVmCjAgMTcKMDAwMDAwMDAwMCA2NTUzNSBmIAowMDAwMDAwMDE1IDAwMDAwIG4gCjAwMDAwMDAxNTMgMDAwMDAgbiAKMDAwMDAwMjcxMCAwMDAwMCBuIAowMDAwMDAyNzMwIDAwMDAwIG4gCjAwMDAwMDI3NjMgMDAwMDAgbiAKMDAwMDAwMzcyNSAwMDAwMCBuIAowMDAwMDAzNzQ0IDAwMDAwIG4gCjAwMDAwMDQyNTIgMDAwMDAgbiAKMDAwMDAwNDI3MSAwMDAwMCBuIAowMDAwMDA0NTE5IDAwMDAwIG4gCjAwMDAwMDQ1MzkgMDAwMDAgbiAKMDAwMDAwNTA0OSAwMDAwMCBuIAowMDAwMDA0ODc1IDAwMDAwIG4gCjAwMDAwMDQ3NjQgMDAwMDAgbiAKMDAwMDAwNDkzNSAwMDAwMCBuIAowMDAwMDA1MjAyIDAwMDAwIG4gCnRyYWlsZXIKPDwKICAvUm9vdCAxNSAwIFIKICAvSW5mbyAxIDAgUgogIC9JRCBbPDgxMkNFOTQxOEEwMEFFMkM3QjM2NTY1RTBCNUU4QzdDPiA8ODEyQ0U5NDE4QTAwQUUyQzdCMzY1NjVFMEI1RThDN0M+XQogIC9TaXplIDE3Cj4+CnN0YXJ0eHJlZgo1MjQ2CiUlRU9GCg=='; var bytes = Ax.util.Base64.decode(file); var scanner = new Ax.barcode.Scanner(); var result = scanner.scanPDF(bytes); console.log(result);
ABCabc123
These functions return a string with the value of the found barcode, or null if no barcode has been found.
2.2 Filters
Filters can be used to refine the Scanner's search. They are used to modify the image so it is easier for the scanner to search for the barcode.
Filters are cumulative, that is, if more than one filter is specified, the output image of one filter is the input for the next.
Let's see its usage with the following example:
var file = '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YW0KZW5kb2JqCjMgMCBvYmoKMjQ3MgplbmRvYmoKNCAwIG9iagpbL0lDQ0Jhc2VkIDIgMCBSXQplbmRvYmoKNSAwIG9iago8PAogIC9UeXBlIC9NZXRhZGF0YQogIC9TdWJ0eXBlIC9YTUwKICAvTGVuZ3RoIDYgMCBSCj4+CnN0cmVhbQo8P3hwYWNrZXQgYmVnaW49Iu+7vyIgaWQ9Ilc1TTBNcENlaGlIenJlU3pOVGN6a2M5ZCI/Pjx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iPgo8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPgo8cmRmOkRlc2NyaXB0aW9uIHhtbG5zOmRjPSJodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVudHMvMS4xLyIgcmRmOmFib3V0PSIiPgo8ZGM6Zm9ybWF0PmFwcGxpY2F0aW9uL3BkZjwvZGM6Zm9ybWF0Pgo8ZGM6bGFuZ3VhZ2U+eC11bmtub3duPC9kYzpsYW5ndWFnZT4KPGRjOmRhdGU+MjAyMS0wMi0wOVQwOToxODo0NyswMTowMDwvZGM6ZGF0ZT4KPC9yZGY6RGVzY3JpcHRpb24+CjxyZGY6RGVzY3JpcHRpb24geG1sbnM6cGRmPSJodHRwOi8vbnMuYWRvYmUuY29tL3BkZi8xLjMvIiByZGY6YWJvdXQ9IiI+CjxwZGY6UHJvZHVjZXI+QXBhY2hlIEZPUCBWZXJzaW9uIDAuMC4yMzI8L3BkZjpQcm9kdWNlcj4KPHBkZjpQREZWZXJzaW9uPjEuNDwvcGRmOlBERlZlcnNpb24+CjwvcmRmOkRlc2NyaXB0aW9uPgo8cmRmOkRlc2NyaXB0aW9uIHhtbG5zOnhtcD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLyIgcmRmOmFib3V0PSIiPgo8eG1wOkNyZWF0b3JUb29sPkFwYWNoZSBGT1AgVmVyc2lvbiAwLjAuMjMyPC94bXA6Q3JlYXRvclRvb2w+Cjx4bXA6TWV0YWRhdGFEYXRlPjIwMjEtMDItMDlUMDk6MTg6NDcrMDE6MDA8L3htcDpNZXRhZGF0YURhdGU+Cjx4bXA6Q3JlYXRlRGF0ZT4yMDIxLTAyLTA5VDA5OjE4OjQ3KzAxOjAwPC94bXA6Q3JlYXRlRGF0ZT4KPC9yZGY6RGVzY3JpcHRpb24+CjwvcmRmOlJERj4KPC94OnhtcG1ldGE+PD94cGFja2V0IGVuZD0iciI/PgoKZW5kc3RyZWFtCmVuZG9iago2IDAgb2JqCjg3MwplbmRvYmoKNyAwIG9iago8PAogIC9OYW1lIC9JbTEKICAvVHlwZSAvWE9iamVjdAogIC9MZW5ndGggOCAwIFIKICAvRmlsdGVyIC9GbGF0ZURlY29kZQogIC9TdWJ0eXBlIC9JbWFnZQogIC9XaWR0aCA4NgogIC9IZWlnaHQgNDUKICAvQml0c1BlckNvbXBvbmVudCA4CiAgL0NvbG9yU3BhY2UgWy9JQ0NCYXNlZCAyIDAgUl0KPj4Kc3RyZWFtCnic7ZFLDgMhDEO5/6XpolJF4w+oGtKNWYwEiWPnzRj8zDnx+z6mDavl0Q+cyzFJsBmtUf7pUWlDIASeIrAamWzbvbYSVIVACDQTUCuURaikhKFC5Y6/wEALgRC4SoB2npQMOgMNJ6DQLxICIfA4Acw2vw9KqLtS0SRFQq8hEAJtBE4SYklJ1iu6+Dl+nRAIgXsE6BwankrKO84xFmW4+jUhEAK3CSgXGvIwlYpKHbcuIRACVwngELpmkVB5ESrONPb214RACPQQwEiKgNoRS8ZFXUMgBJoJqDm4gjLCPFjaGimkIRAC/QTMTJQYlwJwu8sAkiEQAm0EVGb6rnzpLn4adiLnEAiBHgJ+Pl7LKPRa389dKI0QCIH/ElBV30PjUSESKF4hEAI/EHgBkjK4UwplbmRzdHJlYW0KZW5kb2JqCjggMCBvYmoKMzAzCmVuZG9iago5IDAgb2JqCjw8IC9MZW5ndGggMTAgMCBSIC9GaWx0ZXIgL0ZsYXRlRGVjb2RlID4+CnN0cmVhbQp4nHVPvQrCQAze7yky6mCaXHrXyypWVApSOHAQJ0GnIn3/xdS2KAW5IVy+fH+9YyB7m2GkQCgqcO9cP+0ZuESuZB4GtQZ+CMPFtE4S0fsZ/Us1iAXFfMiPtkFRfFJVYFVkikQCkVArHQjFsWPYvUyV4Om22RV70/OQH9/cwh5LJdVK7FNioGh6WkHu4LqCQ90058v6Bvnk6jyl57FwSGyeflFuEf+3W+veudU8bgplbmRzdHJlYW0KZW5kb2JqCjEwIDAgb2JqCjE3MwplbmRvYmoKMTEgMCBvYmoKPDwKICAvUmVzb3VyY2VzIDEyIDAgUgogIC9UeXBlIC9QYWdlCiAgL01lZGlhQm94IFswIDAgNTk1LjI3NSA4NTAuMzkzXQogIC9Dcm9wQm94IFswIDAgNTk1LjI3NSA4NTAuMzkzXQogIC9CbGVlZEJveCBbMCAwIDU5NS4yNzUgODUwLjM5M10KICAvVHJpbUJveCBbMCAwIDU5NS4yNzUgODUwLjM5M10KICAvUGFyZW50IDEzIDAgUgogIC9Db250ZW50cyA5IDAgUgo+PgplbmRvYmoKMTQgMCBvYmoKPDwKICAvVHlwZSAvRm9udAogIC9TdWJ0eXBlIC9UeXBlMQogIC9CYXNlRm9udCAvSGVsdmV0aWNhLUJvbGQKICAvRW5jb2RpbmcgL1dpbkFuc2lFbmNvZGluZwo+PgplbmRvYmoKMTMgMCBvYmoKPDwgL1R5cGUgL1BhZ2VzCi9Db3VudCAxCi9LaWRzIFsxMSAwIFIgXSA+PgplbmRvYmoKMTUgMCBvYmoKPDwKICAvVHlwZSAvQ2F0YWxvZwogIC9QYWdlcyAxMyAwIFIKICAvTGFuZyAoeC11bmtub3duKQogIC9NZXRhZGF0YSA1IDAgUgogIC9QYWdlTGFiZWxzIDE2IDAgUgo+PgplbmRvYmoKMTIgMCBvYmoKPDwKICAvRm9udCA8PCAvRjMgMTQgMCBSID4+CiAgL1Byb2NTZXQgWy9QREYgL0ltYWdlQiAvSW1hZ2VDIC9UZXh0XQogIC9YT2JqZWN0IDw8IC9JbTEgNyAwIFIgPj4KICAvQ29sb3JTcGFjZSA8PCAvRGVmYXVsdFJHQiA0IDAgUiA+Pgo+PgplbmRvYmoKMTYgMCBvYmoKPDwgL051bXMgWzAgPDwgL1MgL0QgPj5dID4+CmVuZG9iagp4cmVmCjAgMTcKMDAwMDAwMDAwMCA2NTUzNSBmIAowMDAwMDAwMDE1IDAwMDAwIG4gCjAwMDAwMDAxNTMgMDAwMDAgbiAKMDAwMDAwMjcxMCAwMDAwMCBuIAowMDAwMDAyNzMwIDAwMDAwIG4gCjAwMDAwMDI3NjMgMDAwMDAgbiAKMDAwMDAwMzcyNSAwMDAwMCBuIAowMDAwMDAzNzQ0IDAwMDAwIG4gCjAwMDAwMDQyNTIgMDAwMDAgbiAKMDAwMDAwNDI3MSAwMDAwMCBuIAowMDAwMDA0NTE5IDAwMDAwIG4gCjAwMDAwMDQ1MzkgMDAwMDAgbiAKMDAwMDAwNTA0OSAwMDAwMCBuIAowMDAwMDA0ODc1IDAwMDAwIG4gCjAwMDAwMDQ3NjQgMDAwMDAgbiAKMDAwMDAwNDkzNSAwMDAwMCBuIAowMDAwMDA1MjAyIDAwMDAwIG4gCnRyYWlsZXIKPDwKICAvUm9vdCAxNSAwIFIKICAvSW5mbyAxIDAgUgogIC9JRCBbPDgxMkNFOTQxOEEwMEFFMkM3QjM2NTY1RTBCNUU4QzdDPiA8ODEyQ0U5NDE4QTAwQUUyQzdCMzY1NjVFMEI1RThDN0M+XQogIC9TaXplIDE3Cj4+CnN0YXJ0eHJlZgo1MjQ2CiUlRU9GCg=='; var bytes = Ax.util.Base64.decode(file); var scanner = new Ax.barcode.Scanner(); scanner.setImageFilter(new Ax.barcode.filter.CropNorthFilter(), new Ax.barcode.filter.RotateFilter(90),new Ax.barcode.filter.ResetFilter(), new Ax.barcode.filter.RegionFilter(400, 200, 10)); var result = scanner.scanPDF(bytes); console.log(result);
ABCabc123
Here, the Scanner does the following steps:
- The Scanner searches the whole image.
- If the barcode is not found, applies the first filter and scans the result. In this case the filter crops the image and keeps the north half of it.
- If the barcode is still not found, the Scanner applies the second filter to the result of the first. In this case it gets the north half of the image returned by the first filter and rotates it 90º. Then the Scanner searches the result of the second filter.
- If the barcode still not found, the Scanner applies the third filter. In this case the reset filter returns the original image.
- If the barcode is still not found, the Scanner applies the fourth filter to the result of the third. In this case the Scanner will re-scan the original image returned by the third filter by scanning all regions with the defined width and height (400x200), moving the region 10 pixels each time.
2.2.1 Crop filters
Crop filters let you choose specific regions for scanning. In case the whole image scanning is unsuccessful, it will re-scan the regions defined by the crop filters.
CropNorthFilter() | Crops the north half of the image. |
CropNorthEastFilter() | Crops the north-east quarter of the image. |
CropNorthWestFilter() | Crops the north-west quarter of the image. |
CropSouthFilter() | Crops the south half of the image. |
CropSouthEastFilter() | Crops the south-east quarter of the image. |
CropSouthWestFilter() | Crops the south-west quarter of the image. |
Look at the folowing example:
var file = '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YW0KZW5kb2JqCjMgMCBvYmoKMjQ3MgplbmRvYmoKNCAwIG9iagpbL0lDQ0Jhc2VkIDIgMCBSXQplbmRvYmoKNSAwIG9iago8PAogIC9UeXBlIC9NZXRhZGF0YQogIC9TdWJ0eXBlIC9YTUwKICAvTGVuZ3RoIDYgMCBSCj4+CnN0cmVhbQo8P3hwYWNrZXQgYmVnaW49Iu+7vyIgaWQ9Ilc1TTBNcENlaGlIenJlU3pOVGN6a2M5ZCI/Pjx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iPgo8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPgo8cmRmOkRlc2NyaXB0aW9uIHhtbG5zOmRjPSJodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVudHMvMS4xLyIgcmRmOmFib3V0PSIiPgo8ZGM6Zm9ybWF0PmFwcGxpY2F0aW9uL3BkZjwvZGM6Zm9ybWF0Pgo8ZGM6bGFuZ3VhZ2U+eC11bmtub3duPC9kYzpsYW5ndWFnZT4KPGRjOmRhdGU+MjAyMS0wMi0wOVQwOToxODo0NyswMTowMDwvZGM6ZGF0ZT4KPC9yZGY6RGVzY3JpcHRpb24+CjxyZGY6RGVzY3JpcHRpb24geG1sbnM6cGRmPSJodHRwOi8vbnMuYWRvYmUuY29tL3BkZi8xLjMvIiByZGY6YWJvdXQ9IiI+CjxwZGY6UHJvZHVjZXI+QXBhY2hlIEZPUCBWZXJzaW9uIDAuMC4yMzI8L3BkZjpQcm9kdWNlcj4KPHBkZjpQREZWZXJzaW9uPjEuNDwvcGRmOlBERlZlcnNpb24+CjwvcmRmOkRlc2NyaXB0aW9uPgo8cmRmOkRlc2NyaXB0aW9uIHhtbG5zOnhtcD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLyIgcmRmOmFib3V0PSIiPgo8eG1wOkNyZWF0b3JUb29sPkFwYWNoZSBGT1AgVmVyc2lvbiAwLjAuMjMyPC94bXA6Q3JlYXRvclRvb2w+Cjx4bXA6TWV0YWRhdGFEYXRlPjIwMjEtMDItMDlUMDk6MTg6NDcrMDE6MDA8L3htcDpNZXRhZGF0YURhdGU+Cjx4bXA6Q3JlYXRlRGF0ZT4yMDIxLTAyLTA5VDA5OjE4OjQ3KzAxOjAwPC94bXA6Q3JlYXRlRGF0ZT4KPC9yZGY6RGVzY3JpcHRpb24+CjwvcmRmOlJERj4KPC94OnhtcG1ldGE+PD94cGFja2V0IGVuZD0iciI/PgoKZW5kc3RyZWFtCmVuZG9iago2IDAgb2JqCjg3MwplbmRvYmoKNyAwIG9iago8PAogIC9OYW1lIC9JbTEKICAvVHlwZSAvWE9iamVjdAogIC9MZW5ndGggOCAwIFIKICAvRmlsdGVyIC9GbGF0ZURlY29kZQogIC9TdWJ0eXBlIC9JbWFnZQogIC9XaWR0aCA4NgogIC9IZWlnaHQgNDUKICAvQml0c1BlckNvbXBvbmVudCA4CiAgL0NvbG9yU3BhY2UgWy9JQ0NCYXNlZCAyIDAgUl0KPj4Kc3RyZWFtCnic7ZFLDgMhDEO5/6XpolJF4w+oGtKNWYwEiWPnzRj8zDnx+z6mDavl0Q+cyzFJsBmtUf7pUWlDIASeIrAamWzbvbYSVIVACDQTUCuURaikhKFC5Y6/wEALgRC4SoB2npQMOgMNJ6DQLxICIfA4Acw2vw9KqLtS0SRFQq8hEAJtBE4SYklJ1iu6+Dl+nRAIgXsE6BwankrKO84xFmW4+jUhEAK3CSgXGvIwlYpKHbcuIRACVwngELpmkVB5ESrONPb214RACPQQwEiKgNoRS8ZFXUMgBJoJqDm4gjLCPFjaGimkIRAC/QTMTJQYlwJwu8sAkiEQAm0EVGb6rnzpLn4adiLnEAiBHgJ+Pl7LKPRa389dKI0QCIH/ElBV30PjUSESKF4hEAI/EHgBkjK4UwplbmRzdHJlYW0KZW5kb2JqCjggMCBvYmoKMzAzCmVuZG9iago5IDAgb2JqCjw8IC9MZW5ndGggMTAgMCBSIC9GaWx0ZXIgL0ZsYXRlRGVjb2RlID4+CnN0cmVhbQp4nHVPvQrCQAze7yky6mCaXHrXyypWVApSOHAQJ0GnIn3/xdS2KAW5IVy+fH+9YyB7m2GkQCgqcO9cP+0ZuESuZB4GtQZ+CMPFtE4S0fsZ/Us1iAXFfMiPtkFRfFJVYFVkikQCkVArHQjFsWPYvUyV4Om22RV70/OQH9/cwh5LJdVK7FNioGh6WkHu4LqCQ90058v6Bvnk6jyl57FwSGyeflFuEf+3W+veudU8bgplbmRzdHJlYW0KZW5kb2JqCjEwIDAgb2JqCjE3MwplbmRvYmoKMTEgMCBvYmoKPDwKICAvUmVzb3VyY2VzIDEyIDAgUgogIC9UeXBlIC9QYWdlCiAgL01lZGlhQm94IFswIDAgNTk1LjI3NSA4NTAuMzkzXQogIC9Dcm9wQm94IFswIDAgNTk1LjI3NSA4NTAuMzkzXQogIC9CbGVlZEJveCBbMCAwIDU5NS4yNzUgODUwLjM5M10KICAvVHJpbUJveCBbMCAwIDU5NS4yNzUgODUwLjM5M10KICAvUGFyZW50IDEzIDAgUgogIC9Db250ZW50cyA5IDAgUgo+PgplbmRvYmoKMTQgMCBvYmoKPDwKICAvVHlwZSAvRm9udAogIC9TdWJ0eXBlIC9UeXBlMQogIC9CYXNlRm9udCAvSGVsdmV0aWNhLUJvbGQKICAvRW5jb2RpbmcgL1dpbkFuc2lFbmNvZGluZwo+PgplbmRvYmoKMTMgMCBvYmoKPDwgL1R5cGUgL1BhZ2VzCi9Db3VudCAxCi9LaWRzIFsxMSAwIFIgXSA+PgplbmRvYmoKMTUgMCBvYmoKPDwKICAvVHlwZSAvQ2F0YWxvZwogIC9QYWdlcyAxMyAwIFIKICAvTGFuZyAoeC11bmtub3duKQogIC9NZXRhZGF0YSA1IDAgUgogIC9QYWdlTGFiZWxzIDE2IDAgUgo+PgplbmRvYmoKMTIgMCBvYmoKPDwKICAvRm9udCA8PCAvRjMgMTQgMCBSID4+CiAgL1Byb2NTZXQgWy9QREYgL0ltYWdlQiAvSW1hZ2VDIC9UZXh0XQogIC9YT2JqZWN0IDw8IC9JbTEgNyAwIFIgPj4KICAvQ29sb3JTcGFjZSA8PCAvRGVmYXVsdFJHQiA0IDAgUiA+Pgo+PgplbmRvYmoKMTYgMCBvYmoKPDwgL051bXMgWzAgPDwgL1MgL0QgPj5dID4+CmVuZG9iagp4cmVmCjAgMTcKMDAwMDAwMDAwMCA2NTUzNSBmIAowMDAwMDAwMDE1IDAwMDAwIG4gCjAwMDAwMDAxNTMgMDAwMDAgbiAKMDAwMDAwMjcxMCAwMDAwMCBuIAowMDAwMDAyNzMwIDAwMDAwIG4gCjAwMDAwMDI3NjMgMDAwMDAgbiAKMDAwMDAwMzcyNSAwMDAwMCBuIAowMDAwMDAzNzQ0IDAwMDAwIG4gCjAwMDAwMDQyNTIgMDAwMDAgbiAKMDAwMDAwNDI3MSAwMDAwMCBuIAowMDAwMDA0NTE5IDAwMDAwIG4gCjAwMDAwMDQ1MzkgMDAwMDAgbiAKMDAwMDAwNTA0OSAwMDAwMCBuIAowMDAwMDA0ODc1IDAwMDAwIG4gCjAwMDAwMDQ3NjQgMDAwMDAgbiAKMDAwMDAwNDkzNSAwMDAwMCBuIAowMDAwMDA1MjAyIDAwMDAwIG4gCnRyYWlsZXIKPDwKICAvUm9vdCAxNSAwIFIKICAvSW5mbyAxIDAgUgogIC9JRCBbPDgxMkNFOTQxOEEwMEFFMkM3QjM2NTY1RTBCNUU4QzdDPiA8ODEyQ0U5NDE4QTAwQUUyQzdCMzY1NjVFMEI1RThDN0M+XQogIC9TaXplIDE3Cj4+CnN0YXJ0eHJlZgo1MjQ2CiUlRU9GCg=='; var bytes = Ax.util.Base64.decode(file); var scanner = new Ax.barcode.Scanner(); scanner.setImageFilter(new Ax.barcode.filter.CropNorthFilter()); var result = scanner.scanPDF(bytes); console.log(result);
ABCabc123
Here the scanner will scan the whole text. If the barcode is not found, it will re-scan the north half of the image.
2.2.2 Rotation filter
The rotation filter can be used to rotate a image for scanning it more efficiently. Useful if a barcode is in vertical or inverted position.
RotateFilter(double angle) | Rotates the image the specified amount of degrees. 'angle' can be negative. |
Look at the following example:
var file = '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YW0KZW5kb2JqCjMgMCBvYmoKMjQ3MgplbmRvYmoKNCAwIG9iagpbL0lDQ0Jhc2VkIDIgMCBSXQplbmRvYmoKNSAwIG9iago8PAogIC9UeXBlIC9NZXRhZGF0YQogIC9TdWJ0eXBlIC9YTUwKICAvTGVuZ3RoIDYgMCBSCj4+CnN0cmVhbQo8P3hwYWNrZXQgYmVnaW49Iu+7vyIgaWQ9Ilc1TTBNcENlaGlIenJlU3pOVGN6a2M5ZCI/Pjx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iPgo8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPgo8cmRmOkRlc2NyaXB0aW9uIHhtbG5zOmRjPSJodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVudHMvMS4xLyIgcmRmOmFib3V0PSIiPgo8ZGM6Zm9ybWF0PmFwcGxpY2F0aW9uL3BkZjwvZGM6Zm9ybWF0Pgo8ZGM6bGFuZ3VhZ2U+eC11bmtub3duPC9kYzpsYW5ndWFnZT4KPGRjOmRhdGU+MjAyMS0wMi0wOVQwOToyNjo1MiswMTowMDwvZGM6ZGF0ZT4KPC9yZGY6RGVzY3JpcHRpb24+CjxyZGY6RGVzY3JpcHRpb24geG1sbnM6cGRmPSJodHRwOi8vbnMuYWRvYmUuY29tL3BkZi8xLjMvIiByZGY6YWJvdXQ9IiI+CjxwZGY6UHJvZHVjZXI+QXBhY2hlIEZPUCBWZXJzaW9uIDAuMC4yMzI8L3BkZjpQcm9kdWNlcj4KPHBkZjpQREZWZXJzaW9uPjEuNDwvcGRmOlBERlZlcnNpb24+CjwvcmRmOkRlc2NyaXB0aW9uPgo8cmRmOkRlc2NyaXB0aW9uIHhtbG5zOnhtcD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLyIgcmRmOmFib3V0PSIiPgo8eG1wOkNyZWF0b3JUb29sPkFwYWNoZSBGT1AgVmVyc2lvbiAwLjAuMjMyPC94bXA6Q3JlYXRvclRvb2w+Cjx4bXA6TWV0YWRhdGFEYXRlPjIwMjEtMDItMDlUMDk6MjY6NTIrMDE6MDA8L3htcDpNZXRhZGF0YURhdGU+Cjx4bXA6Q3JlYXRlRGF0ZT4yMDIxLTAyLTA5VDA5OjI2OjUyKzAxOjAwPC94bXA6Q3JlYXRlRGF0ZT4KPC9yZGY6RGVzY3JpcHRpb24+CjwvcmRmOlJERj4KPC94OnhtcG1ldGE+PD94cGFja2V0IGVuZD0iciI/PgoKZW5kc3RyZWFtCmVuZG9iago2IDAgb2JqCjg3MwplbmRvYmoKNyAwIG9iago8PAogIC9OYW1lIC9JbTEKICAvVHlwZSAvWE9iamVjdAogIC9MZW5ndGggOCAwIFIKICAvRmlsdGVyIC9GbGF0ZURlY29kZQogIC9TdWJ0eXBlIC9JbWFnZQogIC9XaWR0aCA0NQogIC9IZWlnaHQgODYKICAvQml0c1BlckNvbXBvbmVudCA4CiAgL0NvbG9yU3BhY2UgWy9JQ0NCYXNlZCAyIDAgUl0KPj4Kc3RyZWFtCnic7ZRJDoUwDEO5/6X/32QHWLYbaoTylh3ioYjjGIZh0Pi9g3QNRbqGIl1Dka6hSNdQpGsYLkh/FLcAh5EUkuj5DLMiDfSMSYif0q0NaYWJI6kzRYFbi6KShKTVpd7Vhnfd22LUvcOejcVc4Iw3sMshmPOcjfY5UooNScGKZ5Vh8TozsF3iOe4+lc1IDp9LwYgyW4wxKeDiQO+MlGtxq+spQXVMq1JkLw6QYBxKA7skwGQvu5RLMi+tMFY9h5Kf9sNeLikFwDPG+JGuMwOBZ2+OpMVsMcbALUli55wszCtv4OwHOASHmVzZ7J5DKTKzJU1m6mW2GPWuNjZM9kSZ7GBgu5Z0i4kseWaMSZEXtbpEGRhj0tZOLakosCXFAdeZOdJKl3kpIIjcvuL5+QbgKYdheBvpH0aRrqFI1zBckP4oinQNRbqGIl3Du0i/RvEHlG+4UwplbmRzdHJlYW0KZW5kb2JqCjggMCBvYmoKMzM5CmVuZG9iago5IDAgb2JqCjw8IC9MZW5ndGggMTAgMCBSIC9GaWx0ZXIgL0ZsYXRlRGVjb2RlID4+CnN0cmVhbQp4nHWPvQrCQBCE+3uKLbVwsz+X5K4VIyoBCRxYiJWgVZC8f+OeSVACcsXCzs18O4NjIHubPEJJqFHh3rth2jOwR651HiZ1Jn4M+ce0DlqhyKz+tZrEimockhErXGEVKUYPHCMyVUQKwgHVUwwhu4pjz7B7WTTB022TK/YWKpAe3+OVBX3OqdW4BuEQLKn0kHq4ruDQtO35sr5BOrkmTR14rF0GNrAsKi5K/Dbs3BsSPD13CmVuZHN0cmVhbQplbmRvYmoKMTAgMCBvYmoKMTc4CmVuZG9iagoxMSAwIG9iago8PAogIC9SZXNvdXJjZXMgMTIgMCBSCiAgL1R5cGUgL1BhZ2UKICAvTWVkaWFCb3ggWzAgMCA1OTUuMjc1IDg1MC4zOTNdCiAgL0Nyb3BCb3ggWzAgMCA1OTUuMjc1IDg1MC4zOTNdCiAgL0JsZWVkQm94IFswIDAgNTk1LjI3NSA4NTAuMzkzXQogIC9UcmltQm94IFswIDAgNTk1LjI3NSA4NTAuMzkzXQogIC9QYXJlbnQgMTMgMCBSCiAgL0NvbnRlbnRzIDkgMCBSCj4+CmVuZG9iagoxNCAwIG9iago8PAogIC9UeXBlIC9Gb250CiAgL1N1YnR5cGUgL1R5cGUxCiAgL0Jhc2VGb250IC9IZWx2ZXRpY2EtQm9sZAogIC9FbmNvZGluZyAvV2luQW5zaUVuY29kaW5nCj4+CmVuZG9iagoxMyAwIG9iago8PCAvVHlwZSAvUGFnZXMKL0NvdW50IDEKL0tpZHMgWzExIDAgUiBdID4+CmVuZG9iagoxNSAwIG9iago8PAogIC9UeXBlIC9DYXRhbG9nCiAgL1BhZ2VzIDEzIDAgUgogIC9MYW5nICh4LXVua25vd24pCiAgL01ldGFkYXRhIDUgMCBSCiAgL1BhZ2VMYWJlbHMgMTYgMCBSCj4+CmVuZG9iagoxMiAwIG9iago8PAogIC9Gb250IDw8IC9GMyAxNCAwIFIgPj4KICAvUHJvY1NldCBbL1BERiAvSW1hZ2VCIC9JbWFnZUMgL1RleHRdCiAgL1hPYmplY3QgPDwgL0ltMSA3IDAgUiA+PgogIC9Db2xvclNwYWNlIDw8IC9EZWZhdWx0UkdCIDQgMCBSID4+Cj4+CmVuZG9iagoxNiAwIG9iago8PCAvTnVtcyBbMCA8PCAvUyAvRCA+Pl0gPj4KZW5kb2JqCnhyZWYKMCAxNwowMDAwMDAwMDAwIDY1NTM1IGYgCjAwMDAwMDAwMTUgMDAwMDAgbiAKMDAwMDAwMDE1MyAwMDAwMCBuIAowMDAwMDAyNzEwIDAwMDAwIG4gCjAwMDAwMDI3MzAgMDAwMDAgbiAKMDAwMDAwMjc2MyAwMDAwMCBuIAowMDAwMDAzNzI1IDAwMDAwIG4gCjAwMDAwMDM3NDQgMDAwMDAgbiAKMDAwMDAwNDI4OCAwMDAwMCBuIAowMDAwMDA0MzA3IDAwMDAwIG4gCjAwMDAwMDQ1NjAgMDAwMDAgbiAKMDAwMDAwNDU4MCAwMDAwMCBuIAowMDAwMDA1MDkwIDAwMDAwIG4gCjAwMDAwMDQ5MTYgMDAwMDAgbiAKMDAwMDAwNDgwNSAwMDAwMCBuIAowMDAwMDA0OTc2IDAwMDAwIG4gCjAwMDAwMDUyNDMgMDAwMDAgbiAKdHJhaWxlcgo8PAogIC9Sb290IDE1IDAgUgogIC9JbmZvIDEgMCBSCiAgL0lEIFs8OUIxRkI3NUYzRjg5MzA0NUVBODhCODU0NjY2M0FBMjY+IDw5QjFGQjc1RjNGODkzMDQ1RUE4OEI4NTQ2NjYzQUEyNj5dCiAgL1NpemUgMTcKPj4Kc3RhcnR4cmVmCjUyODcKJSVFT0YK'; var bytes = Ax.util.Base64.decode(file); var scanner = new Ax.barcode.Scanner(); scanner.setImageFilter(new Ax.barcode.filter.RotateFilter(90), new Ax.barcode.filter.RotateFilter(90), new Ax.barcode.filter.RotateFilter(90)); var result = scanner.scanPDF(bytes); console.log(result);
ABCabc123
In the previous example the Scanner will search the image normally, rotate it 90º and scan it, rotate it 90º more degrees (180º in total) and scan it, and rotate it 90º more degrees (270º in total) and scan it.
2.2.3 Reset filter
The reset filter can be used to reset a filter (or more). Useful so the following filter is applied to the original image.
ResetFilter() | Resets (undoes) the previous filters. |
Look at the following example:
var file = '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YW0KZW5kb2JqCjMgMCBvYmoKMjQ3MgplbmRvYmoKNCAwIG9iagpbL0lDQ0Jhc2VkIDIgMCBSXQplbmRvYmoKNSAwIG9iago8PAogIC9UeXBlIC9NZXRhZGF0YQogIC9TdWJ0eXBlIC9YTUwKICAvTGVuZ3RoIDYgMCBSCj4+CnN0cmVhbQo8P3hwYWNrZXQgYmVnaW49Iu+7vyIgaWQ9Ilc1TTBNcENlaGlIenJlU3pOVGN6a2M5ZCI/Pjx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iPgo8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPgo8cmRmOkRlc2NyaXB0aW9uIHhtbG5zOmRjPSJodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVudHMvMS4xLyIgcmRmOmFib3V0PSIiPgo8ZGM6Zm9ybWF0PmFwcGxpY2F0aW9uL3BkZjwvZGM6Zm9ybWF0Pgo8ZGM6bGFuZ3VhZ2U+eC11bmtub3duPC9kYzpsYW5ndWFnZT4KPGRjOmRhdGU+MjAyMS0wMi0wOVQwOToyNjo1MiswMTowMDwvZGM6ZGF0ZT4KPC9yZGY6RGVzY3JpcHRpb24+CjxyZGY6RGVzY3JpcHRpb24geG1sbnM6cGRmPSJodHRwOi8vbnMuYWRvYmUuY29tL3BkZi8xLjMvIiByZGY6YWJvdXQ9IiI+CjxwZGY6UHJvZHVjZXI+QXBhY2hlIEZPUCBWZXJzaW9uIDAuMC4yMzI8L3BkZjpQcm9kdWNlcj4KPHBkZjpQREZWZXJzaW9uPjEuNDwvcGRmOlBERlZlcnNpb24+CjwvcmRmOkRlc2NyaXB0aW9uPgo8cmRmOkRlc2NyaXB0aW9uIHhtbG5zOnhtcD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLyIgcmRmOmFib3V0PSIiPgo8eG1wOkNyZWF0b3JUb29sPkFwYWNoZSBGT1AgVmVyc2lvbiAwLjAuMjMyPC94bXA6Q3JlYXRvclRvb2w+Cjx4bXA6TWV0YWRhdGFEYXRlPjIwMjEtMDItMDlUMDk6MjY6NTIrMDE6MDA8L3htcDpNZXRhZGF0YURhdGU+Cjx4bXA6Q3JlYXRlRGF0ZT4yMDIxLTAyLTA5VDA5OjI2OjUyKzAxOjAwPC94bXA6Q3JlYXRlRGF0ZT4KPC9yZGY6RGVzY3JpcHRpb24+CjwvcmRmOlJERj4KPC94OnhtcG1ldGE+PD94cGFja2V0IGVuZD0iciI/PgoKZW5kc3RyZWFtCmVuZG9iago2IDAgb2JqCjg3MwplbmRvYmoKNyAwIG9iago8PAogIC9OYW1lIC9JbTEKICAvVHlwZSAvWE9iamVjdAogIC9MZW5ndGggOCAwIFIKICAvRmlsdGVyIC9GbGF0ZURlY29kZQogIC9TdWJ0eXBlIC9JbWFnZQogIC9XaWR0aCA0NQogIC9IZWlnaHQgODYKICAvQml0c1BlckNvbXBvbmVudCA4CiAgL0NvbG9yU3BhY2UgWy9JQ0NCYXNlZCAyIDAgUl0KPj4Kc3RyZWFtCnic7ZRJDoUwDEO5/6X/32QHWLYbaoTylh3ioYjjGIZh0Pi9g3QNRbqGIl1Dka6hSNdQpGsYLkh/FLcAh5EUkuj5DLMiDfSMSYif0q0NaYWJI6kzRYFbi6KShKTVpd7Vhnfd22LUvcOejcVc4Iw3sMshmPOcjfY5UooNScGKZ5Vh8TozsF3iOe4+lc1IDp9LwYgyW4wxKeDiQO+MlGtxq+spQXVMq1JkLw6QYBxKA7skwGQvu5RLMi+tMFY9h5Kf9sNeLikFwDPG+JGuMwOBZ2+OpMVsMcbALUli55wszCtv4OwHOASHmVzZ7J5DKTKzJU1m6mW2GPWuNjZM9kSZ7GBgu5Z0i4kseWaMSZEXtbpEGRhj0tZOLakosCXFAdeZOdJKl3kpIIjcvuL5+QbgKYdheBvpH0aRrqFI1zBckP4oinQNRbqGIl3Du0i/RvEHlG+4UwplbmRzdHJlYW0KZW5kb2JqCjggMCBvYmoKMzM5CmVuZG9iago5IDAgb2JqCjw8IC9MZW5ndGggMTAgMCBSIC9GaWx0ZXIgL0ZsYXRlRGVjb2RlID4+CnN0cmVhbQp4nHWPvQrCQBCE+3uKLbVwsz+X5K4VIyoBCRxYiJWgVZC8f+OeSVACcsXCzs18O4NjIHubPEJJqFHh3rth2jOwR651HiZ1Jn4M+ce0DlqhyKz+tZrEimockhErXGEVKUYPHCMyVUQKwgHVUwwhu4pjz7B7WTTB022TK/YWKpAe3+OVBX3OqdW4BuEQLKn0kHq4ruDQtO35sr5BOrkmTR14rF0GNrAsKi5K/Dbs3BsSPD13CmVuZHN0cmVhbQplbmRvYmoKMTAgMCBvYmoKMTc4CmVuZG9iagoxMSAwIG9iago8PAogIC9SZXNvdXJjZXMgMTIgMCBSCiAgL1R5cGUgL1BhZ2UKICAvTWVkaWFCb3ggWzAgMCA1OTUuMjc1IDg1MC4zOTNdCiAgL0Nyb3BCb3ggWzAgMCA1OTUuMjc1IDg1MC4zOTNdCiAgL0JsZWVkQm94IFswIDAgNTk1LjI3NSA4NTAuMzkzXQogIC9UcmltQm94IFswIDAgNTk1LjI3NSA4NTAuMzkzXQogIC9QYXJlbnQgMTMgMCBSCiAgL0NvbnRlbnRzIDkgMCBSCj4+CmVuZG9iagoxNCAwIG9iago8PAogIC9UeXBlIC9Gb250CiAgL1N1YnR5cGUgL1R5cGUxCiAgL0Jhc2VGb250IC9IZWx2ZXRpY2EtQm9sZAogIC9FbmNvZGluZyAvV2luQW5zaUVuY29kaW5nCj4+CmVuZG9iagoxMyAwIG9iago8PCAvVHlwZSAvUGFnZXMKL0NvdW50IDEKL0tpZHMgWzExIDAgUiBdID4+CmVuZG9iagoxNSAwIG9iago8PAogIC9UeXBlIC9DYXRhbG9nCiAgL1BhZ2VzIDEzIDAgUgogIC9MYW5nICh4LXVua25vd24pCiAgL01ldGFkYXRhIDUgMCBSCiAgL1BhZ2VMYWJlbHMgMTYgMCBSCj4+CmVuZG9iagoxMiAwIG9iago8PAogIC9Gb250IDw8IC9GMyAxNCAwIFIgPj4KICAvUHJvY1NldCBbL1BERiAvSW1hZ2VCIC9JbWFnZUMgL1RleHRdCiAgL1hPYmplY3QgPDwgL0ltMSA3IDAgUiA+PgogIC9Db2xvclNwYWNlIDw8IC9EZWZhdWx0UkdCIDQgMCBSID4+Cj4+CmVuZG9iagoxNiAwIG9iago8PCAvTnVtcyBbMCA8PCAvUyAvRCA+Pl0gPj4KZW5kb2JqCnhyZWYKMCAxNwowMDAwMDAwMDAwIDY1NTM1IGYgCjAwMDAwMDAwMTUgMDAwMDAgbiAKMDAwMDAwMDE1MyAwMDAwMCBuIAowMDAwMDAyNzEwIDAwMDAwIG4gCjAwMDAwMDI3MzAgMDAwMDAgbiAKMDAwMDAwMjc2MyAwMDAwMCBuIAowMDAwMDAzNzI1IDAwMDAwIG4gCjAwMDAwMDM3NDQgMDAwMDAgbiAKMDAwMDAwNDI4OCAwMDAwMCBuIAowMDAwMDA0MzA3IDAwMDAwIG4gCjAwMDAwMDQ1NjAgMDAwMDAgbiAKMDAwMDAwNDU4MCAwMDAwMCBuIAowMDAwMDA1MDkwIDAwMDAwIG4gCjAwMDAwMDQ5MTYgMDAwMDAgbiAKMDAwMDAwNDgwNSAwMDAwMCBuIAowMDAwMDA0OTc2IDAwMDAwIG4gCjAwMDAwMDUyNDMgMDAwMDAgbiAKdHJhaWxlcgo8PAogIC9Sb290IDE1IDAgUgogIC9JbmZvIDEgMCBSCiAgL0lEIFs8OUIxRkI3NUYzRjg5MzA0NUVBODhCODU0NjY2M0FBMjY+IDw5QjFGQjc1RjNGODkzMDQ1RUE4OEI4NTQ2NjYzQUEyNj5dCiAgL1NpemUgMTcKPj4Kc3RhcnR4cmVmCjUyODcKJSVFT0YK'; var bytes = Ax.util.Base64.decode(file); var scanner = new Ax.barcode.Scanner(); scanner.setImageFilter(new Ax.barcode.filter.RotateFilter(90), new Ax.barcode.filter.ResetFilter(), new Ax.barcode.filter.RotateFilter(-90)); var result = scanner.scanPDF(bytes); console.log(result);
ABCabc123
In the previous example the Scanner will search the image normally, rotate it 90º and scan it, reset the filters (undoing the previous rotation), and rotate it -90º and scan it.
2.2.4 Region filter
The region filter works the same way as the Scanner with specified width and height. This filter will re-scan the image returned by the previous filter scanning all regions with the defined widh and height, and moving each time the region 'step' number of pixels.
RegionFilter(int width, int height, int step) | Scans the image generated from the previous filters scanning all regions with the specified widht and height and moving each time the region 'step' number of pixels. |
Look at the following example:
var file = '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YW0KZW5kb2JqCjMgMCBvYmoKMjQ3MgplbmRvYmoKNCAwIG9iagpbL0lDQ0Jhc2VkIDIgMCBSXQplbmRvYmoKNSAwIG9iago8PAogIC9UeXBlIC9NZXRhZGF0YQogIC9TdWJ0eXBlIC9YTUwKICAvTGVuZ3RoIDYgMCBSCj4+CnN0cmVhbQo8P3hwYWNrZXQgYmVnaW49Iu+7vyIgaWQ9Ilc1TTBNcENlaGlIenJlU3pOVGN6a2M5ZCI/Pjx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iPgo8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPgo8cmRmOkRlc2NyaXB0aW9uIHhtbG5zOmRjPSJodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVudHMvMS4xLyIgcmRmOmFib3V0PSIiPgo8ZGM6Zm9ybWF0PmFwcGxpY2F0aW9uL3BkZjwvZGM6Zm9ybWF0Pgo8ZGM6bGFuZ3VhZ2U+eC11bmtub3duPC9kYzpsYW5ndWFnZT4KPGRjOmRhdGU+MjAyMS0wMi0wOVQwOToxODo0NyswMTowMDwvZGM6ZGF0ZT4KPC9yZGY6RGVzY3JpcHRpb24+CjxyZGY6RGVzY3JpcHRpb24geG1sbnM6cGRmPSJodHRwOi8vbnMuYWRvYmUuY29tL3BkZi8xLjMvIiByZGY6YWJvdXQ9IiI+CjxwZGY6UHJvZHVjZXI+QXBhY2hlIEZPUCBWZXJzaW9uIDAuMC4yMzI8L3BkZjpQcm9kdWNlcj4KPHBkZjpQREZWZXJzaW9uPjEuNDwvcGRmOlBERlZlcnNpb24+CjwvcmRmOkRlc2NyaXB0aW9uPgo8cmRmOkRlc2NyaXB0aW9uIHhtbG5zOnhtcD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLyIgcmRmOmFib3V0PSIiPgo8eG1wOkNyZWF0b3JUb29sPkFwYWNoZSBGT1AgVmVyc2lvbiAwLjAuMjMyPC94bXA6Q3JlYXRvclRvb2w+Cjx4bXA6TWV0YWRhdGFEYXRlPjIwMjEtMDItMDlUMDk6MTg6NDcrMDE6MDA8L3htcDpNZXRhZGF0YURhdGU+Cjx4bXA6Q3JlYXRlRGF0ZT4yMDIxLTAyLTA5VDA5OjE4OjQ3KzAxOjAwPC94bXA6Q3JlYXRlRGF0ZT4KPC9yZGY6RGVzY3JpcHRpb24+CjwvcmRmOlJERj4KPC94OnhtcG1ldGE+PD94cGFja2V0IGVuZD0iciI/PgoKZW5kc3RyZWFtCmVuZG9iago2IDAgb2JqCjg3MwplbmRvYmoKNyAwIG9iago8PAogIC9OYW1lIC9JbTEKICAvVHlwZSAvWE9iamVjdAogIC9MZW5ndGggOCAwIFIKICAvRmlsdGVyIC9GbGF0ZURlY29kZQogIC9TdWJ0eXBlIC9JbWFnZQogIC9XaWR0aCA4NgogIC9IZWlnaHQgNDUKICAvQml0c1BlckNvbXBvbmVudCA4CiAgL0NvbG9yU3BhY2UgWy9JQ0NCYXNlZCAyIDAgUl0KPj4Kc3RyZWFtCnic7ZFLDgMhDEO5/6XpolJF4w+oGtKNWYwEiWPnzRj8zDnx+z6mDavl0Q+cyzFJsBmtUf7pUWlDIASeIrAamWzbvbYSVIVACDQTUCuURaikhKFC5Y6/wEALgRC4SoB2npQMOgMNJ6DQLxICIfA4Acw2vw9KqLtS0SRFQq8hEAJtBE4SYklJ1iu6+Dl+nRAIgXsE6BwankrKO84xFmW4+jUhEAK3CSgXGvIwlYpKHbcuIRACVwngELpmkVB5ESrONPb214RACPQQwEiKgNoRS8ZFXUMgBJoJqDm4gjLCPFjaGimkIRAC/QTMTJQYlwJwu8sAkiEQAm0EVGb6rnzpLn4adiLnEAiBHgJ+Pl7LKPRa389dKI0QCIH/ElBV30PjUSESKF4hEAI/EHgBkjK4UwplbmRzdHJlYW0KZW5kb2JqCjggMCBvYmoKMzAzCmVuZG9iago5IDAgb2JqCjw8IC9MZW5ndGggMTAgMCBSIC9GaWx0ZXIgL0ZsYXRlRGVjb2RlID4+CnN0cmVhbQp4nHVPvQrCQAze7yky6mCaXHrXyypWVApSOHAQJ0GnIn3/xdS2KAW5IVy+fH+9YyB7m2GkQCgqcO9cP+0ZuESuZB4GtQZ+CMPFtE4S0fsZ/Us1iAXFfMiPtkFRfFJVYFVkikQCkVArHQjFsWPYvUyV4Om22RV70/OQH9/cwh5LJdVK7FNioGh6WkHu4LqCQ90058v6Bvnk6jyl57FwSGyeflFuEf+3W+veudU8bgplbmRzdHJlYW0KZW5kb2JqCjEwIDAgb2JqCjE3MwplbmRvYmoKMTEgMCBvYmoKPDwKICAvUmVzb3VyY2VzIDEyIDAgUgogIC9UeXBlIC9QYWdlCiAgL01lZGlhQm94IFswIDAgNTk1LjI3NSA4NTAuMzkzXQogIC9Dcm9wQm94IFswIDAgNTk1LjI3NSA4NTAuMzkzXQogIC9CbGVlZEJveCBbMCAwIDU5NS4yNzUgODUwLjM5M10KICAvVHJpbUJveCBbMCAwIDU5NS4yNzUgODUwLjM5M10KICAvUGFyZW50IDEzIDAgUgogIC9Db250ZW50cyA5IDAgUgo+PgplbmRvYmoKMTQgMCBvYmoKPDwKICAvVHlwZSAvRm9udAogIC9TdWJ0eXBlIC9UeXBlMQogIC9CYXNlRm9udCAvSGVsdmV0aWNhLUJvbGQKICAvRW5jb2RpbmcgL1dpbkFuc2lFbmNvZGluZwo+PgplbmRvYmoKMTMgMCBvYmoKPDwgL1R5cGUgL1BhZ2VzCi9Db3VudCAxCi9LaWRzIFsxMSAwIFIgXSA+PgplbmRvYmoKMTUgMCBvYmoKPDwKICAvVHlwZSAvQ2F0YWxvZwogIC9QYWdlcyAxMyAwIFIKICAvTGFuZyAoeC11bmtub3duKQogIC9NZXRhZGF0YSA1IDAgUgogIC9QYWdlTGFiZWxzIDE2IDAgUgo+PgplbmRvYmoKMTIgMCBvYmoKPDwKICAvRm9udCA8PCAvRjMgMTQgMCBSID4+CiAgL1Byb2NTZXQgWy9QREYgL0ltYWdlQiAvSW1hZ2VDIC9UZXh0XQogIC9YT2JqZWN0IDw8IC9JbTEgNyAwIFIgPj4KICAvQ29sb3JTcGFjZSA8PCAvRGVmYXVsdFJHQiA0IDAgUiA+Pgo+PgplbmRvYmoKMTYgMCBvYmoKPDwgL051bXMgWzAgPDwgL1MgL0QgPj5dID4+CmVuZG9iagp4cmVmCjAgMTcKMDAwMDAwMDAwMCA2NTUzNSBmIAowMDAwMDAwMDE1IDAwMDAwIG4gCjAwMDAwMDAxNTMgMDAwMDAgbiAKMDAwMDAwMjcxMCAwMDAwMCBuIAowMDAwMDAyNzMwIDAwMDAwIG4gCjAwMDAwMDI3NjMgMDAwMDAgbiAKMDAwMDAwMzcyNSAwMDAwMCBuIAowMDAwMDAzNzQ0IDAwMDAwIG4gCjAwMDAwMDQyNTIgMDAwMDAgbiAKMDAwMDAwNDI3MSAwMDAwMCBuIAowMDAwMDA0NTE5IDAwMDAwIG4gCjAwMDAwMDQ1MzkgMDAwMDAgbiAKMDAwMDAwNTA0OSAwMDAwMCBuIAowMDAwMDA0ODc1IDAwMDAwIG4gCjAwMDAwMDQ3NjQgMDAwMDAgbiAKMDAwMDAwNDkzNSAwMDAwMCBuIAowMDAwMDA1MjAyIDAwMDAwIG4gCnRyYWlsZXIKPDwKICAvUm9vdCAxNSAwIFIKICAvSW5mbyAxIDAgUgogIC9JRCBbPDgxMkNFOTQxOEEwMEFFMkM3QjM2NTY1RTBCNUU4QzdDPiA8ODEyQ0U5NDE4QTAwQUUyQzdCMzY1NjVFMEI1RThDN0M+XQogIC9TaXplIDE3Cj4+CnN0YXJ0eHJlZgo1MjQ2CiUlRU9GCg=='; var bytes = Ax.util.Base64.decode(file); var scanner = new Ax.barcode.Scanner(); scanner.setImageFilter(new Ax.barcode.filter.CropNorthFilter(), new Ax.barcode.filter.RegionFilter(400, 200, 10), new Ax.barcode.filter.ResetFilter(), new Ax.barcode.filter.CropSouthFilter(), new Ax.barcode.filter.RegionFilter(400, 200, 10)); var result = scanner.scanPDF(bytes); console.log(result);
ABCabc123
In the previous example the Scanner will crop the north half of the image and keep it, re-scan it, reset the previous filter, crop the south half of the image and keep it, and re-scan it.
2.3 Example
For the following example we are going to use this scanned image:

As we can see, the image is not in optimal conditions. Now we are going to read its main barcode. Let's look at the example:
var file = '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YW0KZW5kb2JqCjMgMCBvYmoKMjQ3MgplbmRvYmoKNCAwIG9iagpbL0lDQ0Jhc2VkIDIgMCBSXQplbmRvYmoKNSAwIG9iago8PAogIC9UeXBlIC9NZXRhZGF0YQogIC9TdWJ0eXBlIC9YTUwKICAvTGVuZ3RoIDYgMCBSCj4+CnN0cmVhbQo8P3hwYWNrZXQgYmVnaW49Iu+7vyIgaWQ9Ilc1TTBNcENlaGlIenJlU3pOVGN6a2M5ZCI/Pjx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iPgo8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPgo8cmRmOkRlc2NyaXB0aW9uIHhtbG5zOmRjPSJodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVudHMvMS4xLyIgcmRmOmFib3V0PSIiPgo8ZGM6Zm9ybWF0PmFwcGxpY2F0aW9uL3BkZjwvZGM6Zm9ybWF0Pgo8ZGM6bGFuZ3VhZ2U+eC11bmtub3duPC9kYzpsYW5ndWFnZT4KPGRjOmRhdGU+MjAyMS0wMi0wOVQwOToxODo0NyswMTowMDwvZGM6ZGF0ZT4KPC9yZGY6RGVzY3JpcHRpb24+CjxyZGY6RGVzY3JpcHRpb24geG1sbnM6cGRmPSJodHRwOi8vbnMuYWRvYmUuY29tL3BkZi8xLjMvIiByZGY6YWJvdXQ9IiI+CjxwZGY6UHJvZHVjZXI+QXBhY2hlIEZPUCBWZXJzaW9uIDAuMC4yMzI8L3BkZjpQcm9kdWNlcj4KPHBkZjpQREZWZXJzaW9uPjEuNDwvcGRmOlBERlZlcnNpb24+CjwvcmRmOkRlc2NyaXB0aW9uPgo8cmRmOkRlc2NyaXB0aW9uIHhtbG5zOnhtcD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLyIgcmRmOmFib3V0PSIiPgo8eG1wOkNyZWF0b3JUb29sPkFwYWNoZSBGT1AgVmVyc2lvbiAwLjAuMjMyPC94bXA6Q3JlYXRvclRvb2w+Cjx4bXA6TWV0YWRhdGFEYXRlPjIwMjEtMDItMDlUMDk6MTg6NDcrMDE6MDA8L3htcDpNZXRhZGF0YURhdGU+Cjx4bXA6Q3JlYXRlRGF0ZT4yMDIxLTAyLTA5VDA5OjE4OjQ3KzAxOjAwPC94bXA6Q3JlYXRlRGF0ZT4KPC9yZGY6RGVzY3JpcHRpb24+CjwvcmRmOlJERj4KPC94OnhtcG1ldGE+PD94cGFja2V0IGVuZD0iciI/PgoKZW5kc3RyZWFtCmVuZG9iago2IDAgb2JqCjg3MwplbmRvYmoKNyAwIG9iago8PAogIC9OYW1lIC9JbTEKICAvVHlwZSAvWE9iamVjdAogIC9MZW5ndGggOCAwIFIKICAvRmlsdGVyIC9GbGF0ZURlY29kZQogIC9TdWJ0eXBlIC9JbWFnZQogIC9XaWR0aCA4NgogIC9IZWlnaHQgNDUKICAvQml0c1BlckNvbXBvbmVudCA4CiAgL0NvbG9yU3BhY2UgWy9JQ0NCYXNlZCAyIDAgUl0KPj4Kc3RyZWFtCnic7ZFLDgMhDEO5/6XpolJF4w+oGtKNWYwEiWPnzRj8zDnx+z6mDavl0Q+cyzFJsBmtUf7pUWlDIASeIrAamWzbvbYSVIVACDQTUCuURaikhKFC5Y6/wEALgRC4SoB2npQMOgMNJ6DQLxICIfA4Acw2vw9KqLtS0SRFQq8hEAJtBE4SYklJ1iu6+Dl+nRAIgXsE6BwankrKO84xFmW4+jUhEAK3CSgXGvIwlYpKHbcuIRACVwngELpmkVB5ESrONPb214RACPQQwEiKgNoRS8ZFXUMgBJoJqDm4gjLCPFjaGimkIRAC/QTMTJQYlwJwu8sAkiEQAm0EVGb6rnzpLn4adiLnEAiBHgJ+Pl7LKPRa389dKI0QCIH/ElBV30PjUSESKF4hEAI/EHgBkjK4UwplbmRzdHJlYW0KZW5kb2JqCjggMCBvYmoKMzAzCmVuZG9iago5IDAgb2JqCjw8IC9MZW5ndGggMTAgMCBSIC9GaWx0ZXIgL0ZsYXRlRGVjb2RlID4+CnN0cmVhbQp4nHVPvQrCQAze7yky6mCaXHrXyypWVApSOHAQJ0GnIn3/xdS2KAW5IVy+fH+9YyB7m2GkQCgqcO9cP+0ZuESuZB4GtQZ+CMPFtE4S0fsZ/Us1iAXFfMiPtkFRfFJVYFVkikQCkVArHQjFsWPYvUyV4Om22RV70/OQH9/cwh5LJdVK7FNioGh6WkHu4LqCQ90058v6Bvnk6jyl57FwSGyeflFuEf+3W+veudU8bgplbmRzdHJlYW0KZW5kb2JqCjEwIDAgb2JqCjE3MwplbmRvYmoKMTEgMCBvYmoKPDwKICAvUmVzb3VyY2VzIDEyIDAgUgogIC9UeXBlIC9QYWdlCiAgL01lZGlhQm94IFswIDAgNTk1LjI3NSA4NTAuMzkzXQogIC9Dcm9wQm94IFswIDAgNTk1LjI3NSA4NTAuMzkzXQogIC9CbGVlZEJveCBbMCAwIDU5NS4yNzUgODUwLjM5M10KICAvVHJpbUJveCBbMCAwIDU5NS4yNzUgODUwLjM5M10KICAvUGFyZW50IDEzIDAgUgogIC9Db250ZW50cyA5IDAgUgo+PgplbmRvYmoKMTQgMCBvYmoKPDwKICAvVHlwZSAvRm9udAogIC9TdWJ0eXBlIC9UeXBlMQogIC9CYXNlRm9udCAvSGVsdmV0aWNhLUJvbGQKICAvRW5jb2RpbmcgL1dpbkFuc2lFbmNvZGluZwo+PgplbmRvYmoKMTMgMCBvYmoKPDwgL1R5cGUgL1BhZ2VzCi9Db3VudCAxCi9LaWRzIFsxMSAwIFIgXSA+PgplbmRvYmoKMTUgMCBvYmoKPDwKICAvVHlwZSAvQ2F0YWxvZwogIC9QYWdlcyAxMyAwIFIKICAvTGFuZyAoeC11bmtub3duKQogIC9NZXRhZGF0YSA1IDAgUgogIC9QYWdlTGFiZWxzIDE2IDAgUgo+PgplbmRvYmoKMTIgMCBvYmoKPDwKICAvRm9udCA8PCAvRjMgMTQgMCBSID4+CiAgL1Byb2NTZXQgWy9QREYgL0ltYWdlQiAvSW1hZ2VDIC9UZXh0XQogIC9YT2JqZWN0IDw8IC9JbTEgNyAwIFIgPj4KICAvQ29sb3JTcGFjZSA8PCAvRGVmYXVsdFJHQiA0IDAgUiA+Pgo+PgplbmRvYmoKMTYgMCBvYmoKPDwgL051bXMgWzAgPDwgL1MgL0QgPj5dID4+CmVuZG9iagp4cmVmCjAgMTcKMDAwMDAwMDAwMCA2NTUzNSBmIAowMDAwMDAwMDE1IDAwMDAwIG4gCjAwMDAwMDAxNTMgMDAwMDAgbiAKMDAwMDAwMjcxMCAwMDAwMCBuIAowMDAwMDAyNzMwIDAwMDAwIG4gCjAwMDAwMDI3NjMgMDAwMDAgbiAKMDAwMDAwMzcyNSAwMDAwMCBuIAowMDAwMDAzNzQ0IDAwMDAwIG4gCjAwMDAwMDQyNTIgMDAwMDAgbiAKMDAwMDAwNDI3MSAwMDAwMCBuIAowMDAwMDA0NTE5IDAwMDAwIG4gCjAwMDAwMDQ1MzkgMDAwMDAgbiAKMDAwMDAwNTA0OSAwMDAwMCBuIAowMDAwMDA0ODc1IDAwMDAwIG4gCjAwMDAwMDQ3NjQgMDAwMDAgbiAKMDAwMDAwNDkzNSAwMDAwMCBuIAowMDAwMDA1MjAyIDAwMDAwIG4gCnRyYWlsZXIKPDwKICAvUm9vdCAxNSAwIFIKICAvSW5mbyAxIDAgUgogIC9JRCBbPDgxMkNFOTQxOEEwMEFFMkM3QjM2NTY1RTBCNUU4QzdDPiA8ODEyQ0U5NDE4QTAwQUUyQzdCMzY1NjVFMEI1RThDN0M+XQogIC9TaXplIDE3Cj4+CnN0YXJ0eHJlZgo1MjQ2CiUlRU9GCg=='; var scanner = new Ax.barcode.Scanner(); var result1 = scanner.scanImage(file); var scanner = new Ax.barcode.Scanner(); scanner.setImageFilter(new Ax.barcode.filter.CropNorthEastFilter(), new Ax.barcode.filter.CropNorthFilter()); var result2 = scanner.scanImage(file); var result = { 'result1': result1, 'result2': result2, }; console.log(result);
{
"result2": "S50075",
"result1": null
}
As we can see, the Scanner is not able to read the barcode by default, so we use the adequate filters to make the Scanner's work easier. In this case we crop the image until we isolate the barcode.
3 Linux tools
An alternative option to read barcode is to use Linux tools like ImageMagick and zbarimg
To install zbarimg
on mac use:
brew install zbar
This automatically installs convert
which is the alias to run ImageMagick on mac.
The following example is a MacOS shell to scan barcodes form a series of PDF files using
convert
(ImageMagick) and zbarimg
.
OIFS="$IFS" IFS=$'\n' for PDF in `find . -type f -name "*.pdf"`; do echo "Processing file $PDF" rm -f tmp/*.png # Convert the PDF into a series of images (one for each page) # It's critical to convert PDF with maximum quality # Also we use the morphology operator convert -density 300 -quality 100 -trim -morphology open square:1 -threshold 76% $PDF tmp/page_%04d.png # Read each page and seach barcodes for PAGE in `find tmp -type f -name "*.png"`; do echo " === file $PDF page $PAGE" zbarimg -q $PAGE done done
3.1 Linux install
zbar can be installed on Linux
-
On Fedora Linux
Copy
dnf install https://pkgs.dyn.su/el8/base/x86_64/zbar-0.22-1.el8.x86_64.rpm dnf install https://rpmfind.net/linux/epel/7/x86_64/Packages/z/zbar-0.10-27.el7.x86_64.rpm