AX 条码打印

AX 条码打印集成在BarCode类及其之类barcode*.

由子类的defaultFont方法指定字体属性。

eg, BarcodeCode39 指定条码字体"BC C39 3 to 1 HD Wide";

以code39为例。

Code 39只接受如下43个有效输入字符:
  26个大写字母(A - Z),
  十个数字(0 - 9),
  连接号(-),句号(.),空格,美圆符号($),斜扛(/),加号(+)以及百分号(%)。
  其余的输入将被忽略。
     * 作为code39的起始和终结符。

    编码规则:每五条线表示一个字符;粗线表示1,细线表示0;线条间的间隙宽的表示1,窄的表示0;
                   五条线加上它们之间的四条间隙就是九位二进制编码,而且这九位中必定有三位是1,所以称为39码;
                   条形码的首尾各一个 * 标识开始和结束。

所以在编码方法encodestring中,传过来的字符串需要预处理成全大写 string = strupr(string);

BarCodeString encodeString(BarCodeString _stringIn)
{
    BarCodeString   resultStr;
    int             len     = strlen(_stringIn);
    int             x;
    int             idx;

    if (len < 1)
        return _stringIn;

    // add the start character
    resultStr = num2char(42); // * 开始

    for (x = 1; x <= len; x++)
    {
        idx = char2num(_stringIn, x);
        if (this.isValidChar(idx))
        {
            resultStr += (idx == 32) ? num2char(44) : substr(_stringIn, x, 1);
        }
    }
    // add the stop code
    resultStr += num2char(42); //* 结束
    return resultStr;
}

eg: 以生产单号:“8105137709” 通过Code39转码显示返回字符串“*8105137709*"

     同事要将显示生产单的字符串控件字体改为 ”BC C39 3 to 1 HD Wide"字体。(这个字体也可以从Tablearcodesetup读取。)

原文地址:https://www.cnblogs.com/sxypeace/p/4609767.html