Vb.net 调用Codesoft

阅读: 评论:0

Vb.net 调用Codesoft

< 调用Codesoft 最近在用VB 做一个项目,其中一项就是标签打印,
用了好多种方法,都不怎么理想,
1.Zebra zpl 命令这个方法最有效,但2D条形码搞不定。希望能搞定的朋友分享一下...
  还有就是同一程序用在多台打印机如果打印机分辨率不同,品牌不同都不能打印。
2.Bartender开发太贵,老板让省钱...
3.zebraDesigner不能在vb 下调用开发...
最后决定用Codesoft 做模板,然后用Vb 调用LabelManager2.
步骤:
1.找个破解版的Codesoft安装,
2.然后找到Lppx2.tlb文件,在vb 下引用

Imports LabelManager2

    Public CSapp As LabelManager2.Application
    Public CSdoc As LabelManager2.Document
    Public CSvars As LabelManager2.Variables
    Dim label_dt As DataTable
    Public Function ServerStart() As Boolean 'lab_object建立及error检测
        Dim LastErr&
        'On Error Resume Next ' catch errors
        CSapp = New LabelManager2.Application 'implements object
        'Set MYDOC = MyApp.ActiveDocument
        LastErr = Err.Erl ' store resulting error code
        On Error GoTo 0 ' returns to normal error trapping
        Select Case LastErr ' depending on
            Case 0 ' no error, return true
                ServerStart = True
            Case 429 ' OLE common error, display special message
                MsgBox("Cannot find or start OLE server, please check its registration.", vbCritical)
            Case Else ' for other errors, use VB error processing
                Err.Raise(LastErr)
        End Select
    End Function
    Public Sub NAR(ByVal o As Object)
        Try
            System.Runtime.InteropServices.Marshal.ReleaseComObject(o)
        Catch
            MessageBox.Show("无法释放 " & o & " 物件")
        Finally
            o = Nothing
        End Try
    End Sub
    Private Sub CS_Print_Label(ByVal label_path As String)
        If ServerStart() = True Then
            CSdoc = CSapp.Documents.Open(label_path, False) 'lable档的object
            CSvars = CSdoc.Variables
            If CSvars Is Nothing Then
                MessageBox.Show("CS Lalel doesn't exsit")
                Exit Sub
            End If
            Dim Other_str, Lan_Model As String
            Other_str = Me.TextBox_Other.Text.ToString.ToUpper
            Lan_Model = Me.ComboBox1.Text.ToString

            ‘这里是给Dt赋值,动态调用数据库数据
            Sql = "Select * Form tabel_name"
            label_dt = Run_SQL(Sql).Tables(0)
            If label_dt.Rows.Count = 0 Then
                Info_Msg_Box("数据不存,不能打印!")
                Return
            End If

            '选择打印机,根据你的需要,可省略
            CSapp.Dialogs.Item(enumDialogType.lppxPrinterSelectDialog).Show()

            '填充器的value
            '注意了,上面是给dt赋值,在这里要把dt 的数据传给标签,
            '我这里用的是For 循环赋值三行就搞定,切记---dt子段名称必须和label 子段名一致,否则赋值不成功。
            '如果你不想用循环也可以,那就这样写吧,CSdoc.Variables.FormVariables.Item("字段名").Value=label_dt.Rows(0)("字段名")
            '不过有20行,你就要写20行了!
            For i As Integer = 1 To CSdoc.Variables.FormVariables.Count
                CSdoc.Variables.FormVariables.Item(i).Value = label_dt.Rows(0)(CSdoc.Variables.FormVariables.Item(i).Name).ToString
            Next
            '列印一张
            CSdoc.PrintDocument(1)
            CSdoc.FormFeed() '结束列印
            CSdoc.Close(True)
            '全部关闭
            CSapp.Documents.CloseAll()
            CSapp.Quit()'这句很重要,不然会进程关不掉,打印一次多一个

            'CSdoc = Nothing
            'CSvars = Nothing
            NAR(CSvars)
            NAR(CSdoc)
            NAR(CSapp)
            GC.Collect(0)
        End If
    End Sub
 
 

本文发布于:2024-02-04 22:57:16,感谢您对本站的认可!

本文链接:https://www.4u4v.net/it/170718291460497.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:Vb   net   Codesoft
留言与评论(共有 0 条评论)
   
验证码:

Copyright ©2019-2022 Comsenz Inc.Powered by ©

网站地图1 网站地图2 网站地图3 网站地图4 网站地图5 网站地图6 网站地图7 网站地图8 网站地图9 网站地图10 网站地图11 网站地图12 网站地图13 网站地图14 网站地图15 网站地图16 网站地图17 网站地图18 网站地图19 网站地图20 网站地图21 网站地图22/a> 网站地图23