Vb.net 如何使用zxing.net处理Code128中的特殊字符

Vb.net 如何使用zxing.net处理Code128中的特殊字符,vb.net,reporting-services,barcode,zxing,ssrs-2012,Vb.net,Reporting Services,Barcode,Zxing,Ssrs 2012,我创建了一个SSRS报告,其中包含一些代码128条形码。条形码是使用最新的zxing.net库生成的。我想在Code128条形码中包含标签(char(9))。但它失败,并显示以下异常消息: System.ArgumentException:输入中的字符不正确: 不用说,它就像一个没有制表字符的魅力 报告中使用GetBarCodeHorizontal生成条形码。但是,出于测试目的,我将其包装到visual studio vb项目中: Class MainWindow Public Func

我创建了一个SSRS报告,其中包含一些代码128条形码。条形码是使用最新的zxing.net库生成的。我想在Code128条形码中包含标签(char(9))。但它失败,并显示以下异常消息:

System.ArgumentException:输入中的字符不正确:

不用说,它就像一个没有制表字符的魅力

报告中使用
GetBarCodeHorizontal
生成条形码。但是,出于测试目的,我将其包装到visual studio vb项目中:

Class MainWindow
    Public Function GetBarCodeHorizontal(ByVal s As String, ByVal width As Integer) As Byte()
        Dim writer As New ZXing.BarcodeWriter()
        Dim ms As System.IO.MemoryStream = New System.IO.MemoryStream()

        writer.Format = ZXing.BarcodeFormat.CODE_128
        writer.Options = New ZXing.Common.EncodingOptions
        writer.Options.Width = width
        writer.Options.Height = 60
        writer.Options.PureBarcode = False
        'writer.Options.Hints.Add(ZXing.EncodeHintType.CHARACTER_SET, "UTF-8")

        Dim bmp As System.Drawing.Bitmap = writer.Write(s)

        bmp.Save(ms, System.Drawing.Imaging.ImageFormat.Png)
        Dim imagedata As Byte()
        imagedata = ms.GetBuffer()
        Return imagedata
    End Function


    Private Sub MainWindow_OnLoaded(sender As Object, e As RoutedEventArgs)
        Try
            Dim barCodeHorizontal = GetBarCodeHorizontal("3999999   80  1XXXXXX8    r1XX3", 200)
        Catch ex As Exception
            Console.WriteLine(ex)
        End Try
    End Sub
End Class
问题:

  • 我怎样才能解决这个问题
  • 这是中兴图书馆的限制吗
  • 是否有任何合适的解决方法(或者可能还有其他库)
我最终得到了一个非常好的结果

还有一个关于如何将条形码嵌入到这个特定库的SSR中的问题

以下是我创建条形码的代码:

 Public Function GetBarcode(ByVal text As String, ByVal barcodeWidth As Integer, ByVal barcodeHeight As Integer) As Byte()
        Dim b As System.Drawing.Bitmap
        Dim bar As New BarcodeLib.Barcode
        bar.Alignment = BarcodeLib.AlignmentPositions.CENTER

        bar.IncludeLabel = False
        b = bar.Encode(BarcodeLib.TYPE.CODE128, text, barcodeWidth, barcodeHeight)
        Dim bitmapData As Byte() = Nothing
        Using ms As New System.IO.MemoryStream()
            b.Save(ms, System.Drawing.Imaging.ImageFormat.Png)
            bitmapData = ms.ToArray()
        End Using
        Return bitmapData
    End Function
条形码数据直接来自如下所示的查询:

SELECT        MilkrunID, Code, Quantity, Batch, PickLocation, Code + CHAR(9) + CAST(Quantity AS NVARCHAR(20)) + CHAR(9) + Batch + CHAR(9) + PickLocation AS Barcode
FROM            Tbl_ReportData_ProductionReplenishment_MilkrunSummary
char(9)创建了一个选项卡。

我最后发现这个选项卡工作得非常好

还有一个关于如何将条形码嵌入到这个特定库的SSR中的问题

以下是我创建条形码的代码:

 Public Function GetBarcode(ByVal text As String, ByVal barcodeWidth As Integer, ByVal barcodeHeight As Integer) As Byte()
        Dim b As System.Drawing.Bitmap
        Dim bar As New BarcodeLib.Barcode
        bar.Alignment = BarcodeLib.AlignmentPositions.CENTER

        bar.IncludeLabel = False
        b = bar.Encode(BarcodeLib.TYPE.CODE128, text, barcodeWidth, barcodeHeight)
        Dim bitmapData As Byte() = Nothing
        Using ms As New System.IO.MemoryStream()
            b.Save(ms, System.Drawing.Imaging.ImageFormat.Png)
            bitmapData = ms.ToArray()
        End Using
        Return bitmapData
    End Function
条形码数据直接来自如下所示的查询:

SELECT        MilkrunID, Code, Quantity, Batch, PickLocation, Code + CHAR(9) + CAST(Quantity AS NVARCHAR(20)) + CHAR(9) + Batch + CHAR(9) + PickLocation AS Barcode
FROM            Tbl_ReportData_ProductionReplenishment_MilkrunSummary

char(9)创建一个标签。

为什么要在条形码中使用标签?也许有一点背景知识,我们可以想出一个替代方案。条形码列表用于将信息插入基于控制台的遗留系统。该选项卡用于切换到下一个字段。条形码应如下所示:[物料编号][标签][数量][标签][批次][标签][位置]。您知道另一个正在使用SSRS的库吗?您是否可以使用另一个字符切换到下一个字段,如管道“|”?zxing是标准的-这里还有一些其他的选项-。。。我想看看是否可以先修改法律。。。。您将遇到的问题是,“tabular”不属于任何编码表(utf-8、iso等),因此我看不到“tabular”在任何库中都能工作的方法。。。也许如果你能找到一个有它的表,然后找到支持该表的库-但是在那之外…谢谢你的评论。不幸的是,除了tab键之外,没有其他方法可以切换到下一个文本字段。我最后找到了另一个库。你为什么要在条形码中使用标签?也许有一点背景知识,我们可以想出一个替代方案。条形码列表用于将信息插入基于控制台的遗留系统。该选项卡用于切换到下一个字段。条形码应如下所示:[物料编号][标签][数量][标签][批次][标签][位置]。您知道另一个正在使用SSRS的库吗?您是否可以使用另一个字符切换到下一个字段,如管道“|”?zxing是标准的-这里还有一些其他的选项-。。。我想看看是否可以先修改法律。。。。您将遇到的问题是,“tabular”不属于任何编码表(utf-8、iso等),因此我看不到“tabular”在任何库中都能工作的方法。。。也许如果你能找到一个有它的表,然后找到支持该表的库-但是在那之外…谢谢你的评论。不幸的是,除了tab键之外,没有其他方法可以切换到下一个文本字段。我最后找到了另一个图书馆。