我编写了标签打印软件(Windows,WPF,C#,.net 4.5),该软件可以使用Datamax H-Class打印机愉快地打印条形码,但有一个例外,即打印以字符开头的条形码C
当我尝试这样做时,条形码被截断,直到其中的第一个数字字符。
小写c
工作正常,但由于我们的一些模型代码确实以 C
开头,我需要找到一种方法来解决这个问题。
我想一定有某种逃脱角色可以允许这样做?但我还没有设法通过谷歌找到它。
我也不是100%确定这是一个code128问题,它是否与Datamax H级打印机,Datamax Windows C# SDK或我们在打印机上使用的code128字体有关?
抱歉,细节太模糊了,任何关于接下来要检查什么的帮助或建议将不胜感激。
更新。
以防万一这有任何用处(我很遗憾地对此表示怀疑),我用于将条形码发送到打印机的代码(在所有条形码字符串不以 C
开头的情况下成功)如下:
ParametersDPL paramDPL = new ParametersDPL();
paramDPL.Align = ParametersDPL.Alignment.Left;
paramDPL.Rotate = ParametersDPL.Rotation.Rotate_270;
paramDPL.IsUnicode = false;
paramDPL.TextEncoding = Encoding.ASCII;
paramDPL.WideBarWidth = 7;
paramDPL.NarrowBarWidth = 4;
paramDPL.SymbolHeight = 60;
//if the stockCode starts with 'C' the barcode will be truncated
docDPL.WriteBarCode("E", String.Format("{0} {1}", stockCode, serialNumber), COL_1, ROW_5, paramDPL);
ParametersDPL
对象来自 Datamax C# SDK。我在代码中看到的唯一可能的问题可能是IsUnicode
或TextEncoding
属性的设置,但我对它们进行了大量实验,但没有效果。ParametersDPL
上的其他房产似乎也不是罪魁祸首。
熟悉Datamax PCL,但症状表明"C"用于选择code128的子字母"C"。尝试以"A"或"ZB"开头的股票代码并查看"A"或"B"是否消失可能会很有用。如果是这样,那么第一个字符可能被用来选择子字母表("A"是仅大写的ASCII,"B"是无控制ASCII)。
然后,您需要非常仔细地查看 Datamax PCL 格式 - 可能是那里有一个(可能是 opional)格式字符,这使得它对前导字符敏感。也许强制输入前导"B"可以解决问题。