c# 二次开发bartender sdk 打印源码
|
安装完bartender后,装全功能版本,在安装路径下,可以找到sdk文件,我需要根据传入的excel文件,检查bartender标签中,有没有指定的列进行打印, barterder10.0版本不支持返回当前标签文件有哪些嵌入式字段,10.1支持,所以只好装了10.1版本,安装了全功能试用版本
引用Seagull.BarTender.Print.dll即可,在安装程序目录下可以找到, 调用代码如下
using Seagull.BarTender.Print; using System; using System.Collections.Generic; using System.Data; using System.Diagnostics; using System.Text;
namespace libPrintBarTender { public class CPrinter { /// <summary> /// dtPrint.Columns.Add("EZPrinter"); // 打印机名字 /// dtPrint.Columns.Add("EZLabelFile"); // 打印的模板文件 /// dtPrint.Columns.Add("EZLabelType"); // 打印的类型 Label 标签 /// dtPrint.Columns.Add("EZLabelCopies"); // 打印的份数 /// dtPrint.Columns.Add("EZPrintMission"); // 默认值1 /// </summary> /// <param name="dtPrintInfo"></param> public void PrintLabel(DataTable dtPrintInfo) { Engine engine = null; LabelFormatDocument btFormat = null; try { if (dtPrintInfo.Rows.Count == 0) { return; } engine = new Engine(true); if (engine == null) { throw new Exception("初始化打印机失败,请检查bartender软件!"); }
string printerName = dtPrintInfo.Rows[0]["EZPrinter"].ToString(); string labelFile = dtPrintInfo.Rows[0]["EZLabelFile"].ToString(); try { btFormat = engine.Documents.Open(labelFile, printerName); } catch (Exception ex) { throw new Exception("打开模块与打印机失败:" + ex.Message); } // 打印标签 PrintInfo(btFormat, dtPrintInfo);
if (btFormat != null) { btFormat.Close(SaveOptions.DoNotSaveChanges); } if (engine != null) { engine.Stop(SaveOptions.DoNotSaveChanges); } } catch (Exception ex) { throw new Exception("打印失败:" + ex.Message); } finally { } }
private static List<string> GetPrintLabelTemplateFields(LabelFormatDocument btFormat) { List<string> colLists = new List<string>(btFormat.SubStrings.Count); for(int i=0; i< btFormat.SubStrings.Count; i++ ) { colLists.Add(btFormat.SubStrings[i].Name); } return colLists; }
private static void RemoveMuchFields(LabelFormatDocument btFormat, ref DataTable dtPrintInfo) { List<string> colLists = GetPrintLabelTemplateFields(btFormat); int m = 0; while (dtPrintInfo.Columns.Count > m) { string colName = dtPrintInfo.Columns[m].ColumnName; if (colLists.Contains(colName)) { m++; continue; } else if (string.Equals(colName, "EZLabelCopies")) { m++; continue; } else { dtPrintInfo.Columns.RemoveAt(m); } } }
private static void PrintInfo(LabelFormatDocument btFormat, DataTable dtPrintInfo) { bool bSerializedLabels = btFormat.PrintSetup.SupportsSerializedLabels; bool bCopies = btFormat.PrintSetup.SupportsIdenticalCopies; int nCopyies = 0;
// 去除多余的字段 RemoveMuchFields(btFormat, ref dtPrintInfo); if (dtPrintInfo.Columns.Count <= 1) { return; // 没有要打印的字段了 }
for (int i = 0; i < dtPrintInfo.Rows.Count; i++) { string copies = dtPrintInfo.Rows[i]["EZLabelCopies"].ToString(); nCopyies = copies.Length > 0 ? int.Parse(copies) : 1; if (nCopyies <= 0) { continue; }
if (bCopies) // 打印机驱动是否支持打印份数 { btFormat.PrintSetup.IdenticalCopiesOfLabel = nCopyies; nCopyies = 1; }
if (bSerializedLabels) { btFormat.PrintSetup.NumberOfSerializedLabels = 1; } for (int m = 1; m <= nCopyies; m++) { for (int j = 0; j < dtPrintInfo.Columns.Count; j++) { string fieldName = dtPrintInfo.Columns[j].ToString(); if (string.Equals(fieldName, "EZLabelCopies")) { continue; } btFormat.SubStrings[fieldName].Value = dtPrintInfo.Rows[i][fieldName].ToString(); }
Messages messages; int waitForCompletionTimeout = 10000; // 10 seconds Result result = btFormat.Print("Label Print", waitForCompletionTimeout, out messages); if (result == Result.Failure) { string messageString = ""; foreach (Seagull.BarTender.Print.Message message in messages) { messageString += " " + message.Text; } throw new Exception(string.Format("打印第[{0}]标签失败,原因:{1}!", i + 1, messageString)); } } } }
} } |
工信部备案号:粤ICP备19123693号
©2025 COPYRIGHT FABULOUS TECH. CO.,LTD. 菲比斯官方网站 版权所有丰匡电子