2017-04-21 948 views
1

我需要什么生成GS1 DataMatrix二维使用ZXing.Net

是产生工作GS1数据矩阵,采用这种测试内容:

(240)1234567890(10)AA12345(11)123456 (21)1(96)1234567

步骤

我已经下载主编的NuGet包从这里:

enter image description here

我创建了使用此代码控制台应用程序:

private static void DoGs1DataMatrixStuff() 
{ 
    var writer = new BarcodeWriter 
    { 
     Format = BarcodeFormat.DATA_MATRIX 
    }; 

    writer 
     .Write("(240)1234567890(10)AA12345(11)123456(21)1(96)1234567") 
     .Save(@"C:\Temp\barcode.png"); 
} 

有没有明显的特定GS1_DataMatrix格式我可以使用...

,让我

enter image description here

若由我的智能手机扫描仪应用程式阅读,使我原本呈现的文字内容,而不是与FNC1的格式,我期待GS1:

(240)1234567890(10)AA12345(11)123456(21)1(96)1234567

而它应该是

24AA12345 11123456211 961234567

来自其他来源(不是我可以用源)我得到这个条码:

enter image description here

使用我的智能手机应用程序这个读入正确数据。

问题

我怎样才能重新创建工作GS1数据矩阵,采用ZXing.Net?

也看到

这个link,克里斯Bahns提高我有同样的问题,但他的要求没有得到一个工作的答案。

回答

1

你必须使用一个格式化字符串与ASCII字符29(GS - 组分隔符):

< GS> 24个< GS> 10AA12345 < GS> 11123456211个< GS> 961234567

(更换“ < GS>“with ASCII 29)

自版本0.15起,ZXing.Net支持带ASCII编码器的GS符号。它用生成的数据矩阵图像中的FNC1码字(232)替换ASCII 29值。

这只是一个低层次的支持。没有内置类或类似的东西可以理解具有固定或可变长度的AI(应用程序标识符)(类似于vCards,vEvent,ISBN ......的结果解析器类)。

+0

这就是这个:'↨'?这导致'消息包含ISO-8859-1编码以外的字符.'。 – Spikee

+0

这与'BarcodeFormat.DATA_MATRIX'有关,如果我把它切换到'QR_CODE'就没有这样的错误,但是当然数据不好,因为'↨'显示为'?'(QR_CODE不能处理它)。 – Spikee

+0

不,这不是那个角色。 ASCII 29不可打印。例如,您可以使用以下代码段编码这样的字符串: 'Writer .Write((char)29 +“24”+(char)29 +“10AA12345”+(char)29 +“11123456”+(char) 29 +“211”+(char)29 +“961234567”);' 如果使用具有固定数据长度的应用标识符,则不需要每个'(char)29'。 – Michael