BarTender 2019 R9
I have to print a complex pre-calculated GS1 barcode regardless of symbology (EAN-128, DataMatrix, QR, etc.). By complex I mean that it may contain any AI-s in any order. By pre-calculated I mean that it is already a single piece of text as read by any barcode scanner. BarTender does not have to make it out of multiple parts. For example:
where ^1 denotes FNC1 symbol.
Normally, it should be printed with the following human-readable representation:
However, BarTender starts parsing it:
* 01 – AI for GTIN, should be followed by exactly 13 digits and a check digit
* 0501100701553 – the data itself
* Ignoring the fact that the barcode is pre-calculated and already includes a check digit, BarTender calculates an extra check digit. The pre-calculated check digit remains unparsed.
* 421 – AI for Ship To Postal Code, where 4 is the pre-calculated check digit of the previous subfield. Actually, AI should be just 21 meaning Serial Number.
Starting with this point, the parsing is broken :-(
For this particular example, the result of adding an extra digit is:
To work around this weird behavior of BarTender in general case, the programmer must implement his own GS1 parser (with a table of all AI-s with their minimum and maximum lengths, etc.), then find and eliminate all the check digits in source data before passing it to BarTender. Double parsing, but why?
The first mention of the extra check digit problem is dates back to 2011. Is that OK? I don't think so.
Please sign in to leave a comment.