C#.Net集成Bartender条码打印的方法(泪流满面终于解决!)

先感谢http://www.cnblogs.com/zhongxinWang/archive/2013/08/22/3275154.html 博主,这篇文章帮了我很大的忙。

笔者时集成在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文件夹中找到喔~


你可能感兴趣的:(Asp.Net,IIS,bartender)