Javascript Code 128 String Builder - Ascii Value> 127问题

时间:2016-04-12 13:23:35

标签: javascript barcode code128

我一直在尝试构建一个基于html / javascript的代码128类型B文本构建器。

我让它适用于大多数条形码,但如果使用的值创建的校验和是一个大于ascii 127的字符,那么我遇到了一个问题。我不确定我应该使用什么来替换它在这种情况下的价值。我已经读过在条形码中添加“Code 3”和“FNC X”的值,但不清楚是什么格式,带有大括号,FNC应该是'FNC4'还是'FNC 4',或者是否与校验和。

我正在使用此网站的免费128字体http://jtbarton.com/Barcodes/BarcodeStringBuilderExample.aspx。 我尝试了各种条件,例如,如果值>> 127,则取现有的ascii值而不是添加32,但条形码不可读。

我这里有一个jsfiddle,https://jsfiddle.net/jcqvag5g/。如果使用500.77005.YELLO.XXXXX.0160828之类的值,则条形码文本无效。

任何见解都将受到赞赏。我目前还没有找到可行的解决方案。它也可能是我正在使用的特定条形码字体,因此也欢迎其他固体128字体的推荐。

这是主要的js代码。

function textTo128(str) {
    /*
     * Generate 128 Barcode text, suitable for copying and pasting.
     */
        var len         = str.length; //str.length - get length of string, used to generate the checksum.
        var type128     = 104; // 128 Type B start
        var typeClose   = 106;
        var total       = 104; 

        var i; // Counter Variable
        for(i=0;i<len;i++){
            total += ((i+1) * (str.charCodeAt(i)-32)); //Multiply char position with decimal value of character, keep running total
        }

        var modVal      = total % 103; // Use Modulus to find our checksum
        var checksum    = String.fromCharCode(modVal+32);

        if(modVal+32>126){alert(modVal+32);};
        document.getElementById('barcodeTotal').innerHTML = String.fromCharCode(type128+100) + str + checksum + String.fromCharCode(typeClose+100);
    }

谢谢, -David

1 个答案:

答案 0 :(得分:0)

如果大于126

,校验和应该加18

var checksum = String.fromCharCode(modVal + 32&gt; 126?modVal + 32 + 18:modVal + 32);