调用Bartender服务并打印bartender标签
通常大部分企业在生产,仓储,QC等运作环节会用到标签,标签上有些各种标识。
一般的企业都有配有标签软件+专用的标签打印机。此例以bartender为例子。
如果为了实现打印条码,或者显示具体的功能,用CR,FR等都可以实现。但这些报表工具毕竟不是专业的标签软件。
好兄弟大牛超哥分享了一个delphi写的源码,可惜我不会delphi也就没有IDE环境去看源码,就想C#写一个类似的功能:
大概的思路:调用Bartender服务并打印bartender标签
(1)下载Bartender的SDK,直接引用了(也没有研究SDK,偷懒。。。)
(2)安装bartender的软件,并制作标签作为测试用,本例:合格证。
(3)代码实现
程序界面:
制作标签:
代码如下(其中一个标签类型的代码,其他省略):
public partial class FrmQC : Form
{
public FrmQC()
{
InitializeComponent();
}
BarTender.Application btApp;
BarTender.Format btFormat;
private void Form1_Load(object sender, EventArgs e)
{
btApp = new BarTender.Application();
this.num2.Value = 1;
}
private void button1_Click(object sender, EventArgs e)
{
int a = Int32.Parse(this.num2.Value.ToString());//设置打印数量的变量
if (this.txtItem.Text.Length == 0 )
{
MessageBox.Show("未输入料号");
}
else
{
btFormat = btApp.Formats.Open(@"C:\BarTenderFiles\合格证", false, "");
btFormat.PrintSetup.IdenticalCopiesOfLabel = 1; //设置同序列打印的份数
btFormat.PrintSetup.NumberSerializedLabels = a; //设置需要打印的序列数
btFormat.SetNamedSubStringValue("品号", this.txtItem.Text); //向bartender模板传递变量
btFormat.SetNamedSubStringValue("品名", this.txtName.Text); //向bartender模板传递变量
btFormat.SetNamedSubStringValue("规格", this.txtDesc.Text); //向bartender模板传递变量
btFormat.SetNamedSubStringValue("批号", this.txtPici.Text); //向bartender模板传递变量
btFormat.SetNamedSubStringValue("日期", System.DateTime.Now.Year + "." + System.DateTime.Now.Month + "." + System.DateTime.Now.Day ); //向bartender模板传递变量
btFormat.SetNamedSubStringValue("月份", System.DateTime.Now.Month + "月份"); //向bartender模板传递变量
btFormat.SetNamedSubStringValue("月", System.DateTime.Now.Month.ToString()); //向bartender模板传递变量
btFormat.PrintOut(true, true); //第二个false设置打印时是否跳出打印属性
btFormat.Close(BarTender.BtSaveOptions.btSaveChanges); //退出时是否保存标签
}
}
private void Form1_FormClosed(object sender, FormClosedEventArgs e)
{
btApp.Quit(BarTender.BtSaveOptions.btSaveChanges);//界面退出时同步退出bartender进程
}
}
由于没有测试环境没有连接TSC标签打印机,普通打印机A4纸张输出结果:
注意:标签模板变量需设置成共享名。
否则会遇到这样的问题:
红色字体部分报错 [System.Runtime.InteropServices.COMException] = {“已命名子字串 Name 未在已命名子字串列表中找到。”}求解决办法
调用Bartender服务并打印bartender标签的更多相关文章
- BarTender出现条码打印位置不准的情况怎么办
在使用BarTender 2016设计打印条码标签,往往在打印时会遇到各种各样的问题,比如说:打印内容错位,内容发生偏移,与设置好的BarTender 2016条码标签的相对位置发生较为严重的偏差,这 ...
- C#程序调用CodeSoft预先设计好的标签模块实现打印功能
if (this.tbSetLabel.Text.Trim() == "") { MessageBox.Show("请先 Enter 选择标签模板文件!", & ...
- 【Java EE 学习 80 下】【调用WebService服务的四种方式】【WebService中的注解】
不考虑第三方框架,如果只使用JDK提供的API,那么可以使用三种方式调用WebService服务:另外还可以使用Ajax调用WebService服务. 预备工作:开启WebService服务,使用jd ...
- flex 调用gp服务
同步异步说明: gp服务分为同步和异步两种模式,两者的区别是:同步:适合于快速的处理,数据量较小,本质区别在于同步模式,服务器处理之后,处理结果并不在服务器端保存,而是将结果发送至客户端,由客户端去显 ...
- node.js 调用第三方服务
node作为客户端调用第三方服务 nodejs.cn/api 1. let http = require('http'); let util = require("util") ...
- SNF快速开发平台MVC-EasyUI3.9之-WebApi和MVC-controller层接收的json字符串的取值方法和调用后台服务方法
最近项目组很多人问我,从前台页面传到后台controller控制层或者WebApi 时如何取值和运算操作. 今天就都大家一个在框架内一个取值技巧 前台JS调用代码: 1.下面是选中一行数据后右键点击时 ...
- 浅谈Eclipse调用Tomcat服务的原理
浅谈Eclipse调用Tomcat服务的原理 转:http://www.thinksaas.cn/group/topic/341645/ 转:http://www.173it.cn/Html/?581 ...
- webservice -- cxf客户端调用axis2服务端
背景: 有个项目, 需要由第三方提供用户信息, 实现用户同步操作, 对方给提供webservice接口(axis2实现)并也使用axis2作主客户端调用我方提供的webservice接口 起初, 由于 ...
- 小D课堂 - 新版本微服务springcloud+Docker教程_4-02 微服务调用方式之ribbon实战 订单调用商品服务
笔记 2.微服务调用方式之ribbon实战 订单调用商品服务 简介:实战电商项目 订单服务 调用商品服务获取商品信息 1.创建order_service项目 2 ...
随机推荐
- 安装wamp提示You dont't have permission to accesson on this server的解决方案
展示一下安装好的效果图 首先找到安装目录下的路径[wamp\bin\apache\Apache2.2.21\conf\] § 找到httpd.conf,用记事本打开httpd.conf,然后将 1. ...
- jquery 加載
load(url,data,callback)從遠程服務器加載數據,并放入到被選中元素上: url是必須有的,希望加載的url: data是可選的,表示和請求一起發送的鍵值對數據: callback是 ...
- javascript 中的后退和前进到上下一页
jsp页面中要返回到上一页可以使用的方法有: 一不刷新: window.history.back(); //返回上一页,这里是利用的浏览器的缓存,返回后数据不会刷新;下一页就用:window.his ...
- BZOJ3597 SCOI2014方伯伯运椰子(分数规划+spfa)
即在总流量不变的情况下调整每条边的流量.显然先二分答案变为求最小费用.容易想到直接流量清空跑费用流,但复杂度略有些高. 首先需要知道(不知道也行?)一种平时基本不用的求最小费用流的算法——消圈法.算法 ...
- Hibernate 查询技术
转载: http://blog.csdn.net/u014078192/article/details/24986475 一.Hibernate的三种查询方式(掌握) Hibernate中提供了三种查 ...
- hdu1728 逃离迷宫
给定一个m × n (m行, n列)的迷宫,迷宫中有两个位置,gloria想从迷宫的一个位置走到另外一个位置,当然迷宫中有些地方是空地,gloria可以穿越,有些地方是障碍,她必须绕行,从迷宫的一个位 ...
- day 变量的赋值原理 变量的命名规则
print(3*4*5*6/2) #简单的计算输出 x=3 y=4 print("x乘以y=",x*y) #运行5分钟 = 12 print(x*y) #在运行5分钟 = 12 ' ...
- IDEA常见设置
对于eclipse实在忍无可忍,各种功能各种bug..换回IDEA IDEA常见问题(其实不是问题,代码规范而已) 1.解决无限 This file is indented with tabs ins ...
- 结构体练习(C)
结构体存储学生学号.姓名.总分,动态内存分配增加信息,然后排序 # include <stdio.h> # include <malloc.h> //# include < ...
- docker的网络模式
记性不好,回顾一下.按照惯例,直接看官文. Docker's networking subsystem is pluggable, using drivers. Several drivers exi ...