做工控软件不免要打印标签,打印方式很多:打印图片方式,命令方式……
最简单的要数Codesoft了
Codesoft可以编辑要要打印的标签,需要改变的文字或条码,二维码置为变量,打印时将参数传入即可
首先需要安装Codesoft,并编辑好标签备用
然后下载需要使用的库文件里面有dll文件和tlb文件,本文只介绍dll文件用法
http://files.cnblogs.com/files/w519/codesoft%E5%8F%8A%E5%85%B6%E4%BB%96.rar
新建工程,简单界面如下
C#代码如下
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Drawing.Printing;
using LabelManager2;
using System.Threading;
namespace PrintTestByCodesoft
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
LabelManager2.ApplicationClass lbl = new LabelManager2.ApplicationClass();
private void btPrint_Click(object sender, EventArgs e)
{
Document doc = lbl.ActiveDocument;
doc.Printer.SwitchTo("ZDesigner ZT410-300dpi ZPL", "USB001", true);//选择打印机
doc.Variables.FreeVariables.Item("变量0").Value = tbSn.Text;//给lab文件中设置的变量传值
doc.PrintLabel(1, 1, 1, 1, 1, "");//打印
doc.FormFeed();
}
private void Form1_Load(object sender, EventArgs e)
{
openFile();
}
void openFile()
{
string strFile = System.Windows.Forms.Application.StartupPath.ToString() + @"\S703.lab";//lab文件路径
lbl.Documents.Open(strFile, false);//比较费时间
}
private void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
try
{
lbl.Documents.CloseAll(false);
lbl.Quit();
}
catch
{ }
}
}
}
VB.Net代码如下与C#差不多
Imports LabelManager2
Public Class Form1
Public lbl As LabelManager2.Application
Dim strFile As String
Dim doc As Document
Dim portNames As String()
Private Sub btPrint_Click(sender As Object, e As EventArgs) Handles btPrint.Click
doc.Variables.FreeVariables.Item("变量0").Value = tbSn.Text
doc.PrintLabel(1, 1, 1, 1, 1, "")
doc.FormFeed()
End Sub
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
lbl = New LabelManager2.Application()
strFile = System.Windows.Forms.Application.StartupPath.ToString() & "\S703.lab"
lbl.Documents.Open(strFile, False)
doc = lbl.ActiveDocument
doc.Printer.SwitchTo("ZDesigner ZT410-300dpi ZPL", "USB001", True)
End Sub
Private Sub Form1_FormClosing(sender As Object, e As FormClosingEventArgs) Handles MyBase.FormClosing
Try
lbl.Documents.CloseAll(False)
lbl.Quit()
Catch
End Try
End Sub
End Class
VB不能直接调用.net的dll,需要自己封装一下
新建一个VB的类库,然后新建一个COM类
Imports LabelManager2
<ComClass(ComCodeSoftPrint.ClassId, ComCodeSoftPrint.InterfaceId, ComCodeSoftPrint.EventsId)> _
Public Class ComCodeSoftPrint
#Region "COM GUID"
' 这些 GUID 提供此类的 COM 标识
' 及其 COM 接口。若更改它们,则现有的
' 客户端将不再能访问此类。
Public Const ClassId As String = "81498e68-3899-4b7b-ae9f-c9e301480d69"
Public Const InterfaceId As String = "724ab222-2448-4440-a9e0-d06b5aa14f17"
Public Const EventsId As String = "49c8e387-a0e9-4f25-acaf-cd2cd028b2dc"
#End Region
' 可创建的 COM 类必须具有一个不带参数的 Public Sub New()
' 否则, 将不会在
' COM 注册表中注册此类,且无法通过
' CreateObject 创建此类。
Public Sub New()
MyBase.New()
End Sub
Public lbl As LabelManager2.Application
Dim strFile As String
Dim doc As Document
Public Sub openLabFile(filePath As String)
lbl = New LabelManager2.Application()
lbl.Documents.Open(filePath, False)
doc = lbl.ActiveDocument
doc.Printer.SwitchTo("ZDesigner ZT410-300dpi ZPL", "USB001", True)
End Sub
Public Sub closeLabFile()
Try
lbl.Documents.CloseAll(False)
lbl.Quit()
Catch
End Try
End Sub
Public Sub printLabel(var0 As String)
doc.Variables.FreeVariables.Item("变量0").Value = var0
doc.PrintLabel(1, 1, 1, 1, 1, "")
doc.FormFeed()
End Sub
End Class
在目录里会生成tlb文件,把dll和tlb复制到VB6目录中,添加tlb的引用即可