转载: C#.Net集成Bartender条码打印的方法
笔者时集成在Asp.Net项目中,至于其他项目暂不做指导。
1.首先安装Bartender条码打印软件(笔者是使用的版本是10.0),安装时版本选择 Enterprise Automation,记得把Seagull.Listen.Server和SDK也安上。安装完毕后用注册机生成注册码破解(网络上一搜就能搜到)
ps:破解时注意断网破解。
2.项目中引用Seagull.BarTender.Print.dll程序集文件。
然后加入以下代码
Engine btEngine = new Engine();
bool isAlive = btEngine.IsAlive;
this.Label1.Text = isAlive.ToString();
btEngine.Start();
LabelFormatDocument btFormat = btEngine.Documents.Open(Server.MapPath("~/test.btw"));//这里是Bartender软件生成的模板文件,你需要先把模板文件做好。
btFormat.PrintSetup.PrinterName = printerName;
btFormat.PrintSetup.IdenticalCopiesOfLabel = 1; //打印份数
btFormat.SubStrings["s0"].Value = value;
Messages messages;
int waitout = 10000; // 10秒 超时
Result nResult = btFormat.Print("标签打印软件", waitout, out messages);
//string messageString = "\n\nMessages:";
//foreach (Seagull.BarTender.Print.Message message in messages)
//{
// messageString += "\n\n" + message.Text;
//}
btFormat.SubStrings["k0"].Value = typeName;//为Bartender里的数据源(文本框、条码等等)传值
btFormat.SubStrings["k1"].Value = spec;
btFormat.SubStrings["k2"].Value = supplier;
btFormat.SubStrings["k3"].Value = batch;
btFormat.SubStrings["s0"].Value = value;
//Result nResult1 = btFormat.Print("标签打印软件", waitout, out messages);
btFormat.PrintSetup.Cache.FlushInterval = CacheFlushInterval.PerSession;
btFormat.Close(SaveOptions.DoNotSaveChanges);//不保存对打开模板的修改
btEngine.Stop();
写到这里基本上在本地vs上运行就能执行打印了。
3.发布到iis
这里当初把笔者难为了一番。
本地跑的好好的,发布到iis就报错了。
后来千辛万苦才解决。
原来问题出现在iis账户权限。
iis默认是用network service这个账户去执行一系列操作的,包括之前SDK中写到的,btEngine.Start();这句代码。
这就跟在web上执行打开excel或word文件是一样的。
network service账户默认是没有对bartender模板文件的读写权限的。
所以这里我们需要设置一下network service的权限。
控制面板》管理工具》组件服务》计算机》我的电脑》DCOM配置
找到以bartender单词开头的几个服务。
右击服务》属性》安全
全部改为自定义 并且这三项编辑里面添加账户,加入 network service账户,并给与其最大权限。
然后我们回到iis上,选择我们发布的网站》双击身份验证(在内容视图界面)
右键ASP.NET模拟》编辑》特定用户》设置》
填写administrator账户及密码(注意必须为administrator账户设置密码)
然后重新启动网站,本以为OK了,后来才知道要通过Web网页调取本地的Bartender打印程序。
无奈,将打印程序做成.net windows控件,将windows控件加载到ie网页(只有ie才支持)
然后通过网页嵌套windows控件,windows控件调取bartender打印程序的方式 进行条码打印。
在这期间,打印条码的电脑,还需要先将做好的windows控件注册。
PS:Seagull.BarTender.Print.dll文件能在安装的sdk文件夹中找到喔~
原文链接:http://blog.csdn.net/hw1233456/article/details/25303303