Javascript 代码 128 字符串生成器 - Ascii 值 > 127 问题

Posted

技术标签:

【中文标题】Javascript 代码 128 字符串生成器 - Ascii 值 > 127 问题【英文标题】:Javascript Code 128 String Builder - Ascii Value > 127 issue 【发布时间】:2016-08-03 03:34:26 【问题描述】:

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

它适用于大多数条形码,但如果使用的值创建的校验和是大于 ascii 127 的字符,我会遇到问题。我不确定应该使用什么来替换它这种情况下的价值。我读过在条形码中添加“代码 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);
    

谢谢, -大卫

【问题讨论】:

【参考方案1】:

如果大于 126,校验和应加 18

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

【讨论】:

感谢您的回复。当我将该代码与上面的部件号 (500.77005.YELLO.XXXXX.0160828) 结合使用时,校验和为空白。这是更新后的小提琴,jsfiddle.net/3vpL3ytz。

以上是关于Javascript 代码 128 字符串生成器 - Ascii 值 > 127 问题的主要内容,如果未能解决你的问题,请参考以下文章

如何在 TCPDF 中正确生成 GS1-128(以前称为 EAN-128)条码

使用JavaScript创建SVG矢量图Code128编码

使用JavaScript创建SVG矢量图Code128编码

使用JavaScript创建SVG矢量图Code128编码

使用JavaScript创建SVG矢量图Code128编码

在使用字体(不是图像也不是 javascript)的网页中显示 Code128