C#控制打印机打印

一、引用BarcodeStandard.dll

#region BarcodeStandard.dll /* * * 使用说明 需要通过NuGet进行安装BarcodeLib.dll,必不可少 */string inputString; /// /// 获取所以打印机驱动名称 /// private void getPrintDocumentlist() { PrintDocument print = new PrintDocument(); string sDefault = print.PrinterSettings.PrinterName; //默认打印机名 comboBox_drive.Items.Add(sDefault); comboBox_drive.Text = sDefault; //显示默认驱动名称 foreach (string sPrint in PrinterSettings.InstalledPrinters)//获取所有打印机名称 { if (sPrint != sDefault) { comboBox_drive.Items.Add(sPrint); } }} /// /// 打印绘制 /// /// /// 【C#控制打印机打印】 private void printDocument1_PrintPage(object sender, PrintPageEventArgs e) { Font titleFont = new Font("宋体", 9, FontStyle.Bold); //标题字体Font fntTxt = new Font("宋体", 9, FontStyle.Regular); //正文文字Brush brush = new SolidBrush(Color.Black); //画刷Pen pen = new Pen(Color.Black); //线条颜色Point po = new Point(10, 10); try { //画String e.Graphics.DrawString(GetPrintSW().ToString(), titleFont, brush, po); //打印内容//画横线 //Point[] point = { new Point(20, 50), new Point(200, 50) }; //纵坐标不变 //e.Graphics.DrawLines(pen, point); //画竖线 //Point[] points1 = { new Point(60, 70), new Point(60, 70 + 40) }; //横坐标不变 //e.Graphics.DrawLines(pen, points1); //画矩形 //e.Graphics.DrawRectangle(pen, 20, 70, 90, 90); }catch (Exception ex) { MessageBox.Show(this, "打印出错!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information); }} /// /// 获取打印内容 /// /// public StringBuilder GetPrintSW() { StringBuilder sb = new StringBuilder(); string tou = "XXXXXX科技有限公司"; string address = "安徽省合肥市瑶海区"; string saleID = "100010000001"; //单号string item = "项目"; decimal price = 25.00M; int count = 5; decimal total = 0.00M; decimal fukuan = 500.00M; sb.AppendLine(" " + tou + " \n"); sb.AppendLine("-----------------------------------------"); sb.AppendLine("日期:" + DateTime.Now.ToShortDateString() + " " + "单号:" + saleID); sb.AppendLine("-----------------------------------------"); sb.AppendLine("项目" + "" + "数量" + "" + "单价" + "" + "小计"); for (int i = 0; i < count; i++) { decimal xiaoji = (i + 1) * price; sb.AppendLine(item + (i + 1) + "" + (i + 1) + "" + price + "" + xiaoji); total += xiaoji; }sb.AppendLine("-----------------------------------------"); sb.AppendLine("数量:" + count + "合计: " + total); sb.AppendLine("付款:" + fukuan); sb.AppendLine("现金找零:" + (fukuan - total)); sb.AppendLine("-----------------------------------------"); sb.AppendLine("地址:" + address + ""); sb.AppendLine("电话:130000000000"); sb.AppendLine("谢谢惠顾欢迎下次光临!"); sb.AppendLine("-----------------------------------------"); return sb; }/// /// 生成条形码 /// /// 内容 /// public static Image GenerateBarCodeBitmap(string content) { using (var barcode = new Barcode() { IncludeLabel = true, Alignment = AlignmentPositions.CENTER, Width = 250, Height = 100, RotateFlipType = RotateFlipType.RotateNoneFlipNone, BackColor = Color.White, ForeColor = Color.Black, }) { return barcode.Encode(TYPE.CODE128B, content); } } #endregion

二、引用Seagull.BarTender.Print.dll
#regionSeagull.BarTender.Print.dll /// /// 打印测试 /// /// /// private void printbt_Click(object sender, EventArgs e) { string qd = comboBox_drive.Text; //下拉列表选择的驱动名称 var printDocument = new PrintDocument(); //指定打印机 printDocument.PrinterSettings.PrinterName = qd; //驱动名称printDocument.PrintPage += new PrintPageEventHandler(printDocument1_PrintPage); try {//打印预览 //PrintPreviewDialog ppd = new PrintPreviewDialog(); //ppd.Document = printDocument; //ppd.ShowDialog(); //打印 printDocument.Print(); } catch (InvalidPrinterException) {} finally { printDocument.Dispose(); } } /// /// BarTender打印 /// /// /// private void BarTender_Click(object sender, EventArgs e) { try{ //程序中写入引用 using Seagull.BarTender.Print.dll,必不可少; //安装Bartender后,在安装的根目录或者system32下课可找到对应的dll #region Engine btEngine = new Engine(); btEngine.Start(); string lj = AppDomain.CurrentDomain.BaseDirectory + "test.btw"; //test.btw是BT的模板 LabelFormatDocument btFormat = btEngine.Documents.Open(lj); //对BTW模版相应字段进行赋值 btFormat.SubStrings["name"].Value ="https://www.it610.com/article/Liming"; btFormat.SubStrings["code"].Value = "https://www.it610.com/article/1234567890"; //指定打印机名 btFormat.PrintSetup.PrinterName = "WPS 虚拟打印机"; //改变标签打印数份连载 btFormat.PrintSetup.NumberOfSerializedLabels = 1; //打印份数 btFormat.PrintSetup.IdenticalCopiesOfLabel = 1; Messages messages; int waitout = 10000; // 10秒 超时 Result nResult1 = btFormat.Print("标签打印软件", waitout, out messages); btFormat.PrintSetup.Cache.FlushInterval = CacheFlushInterval.PerSession; //不保存对打开模板的修改 btFormat.Close(Seagull.BarTender.Print.SaveOptions.DoNotSaveChanges); //结束打印引擎 btEngine.Stop(); #endregion} catch (Exception ex) { MessageBox.Show("错误信息: " + ex.Message); return; } }#endregion

三、引用 Interop.LabelManager2.dll
#regionInterop.LabelManager2.dll /// /// 打印功能 CodeSoft /// /// 打印模板参数值1 /// 打印模板参数值2 /// 打印模板参数值3 /// 打印模板参数值4 /// public bool SoftCodePrint(string PrintParam1 = "", string PrintParam2 = "", string PrintParam3 = "", string PrintParam4 = "") { bool result = false; int printNum = 2; //打印份数 try { string text = string.Empty; ApplicationClass labApp = null; Document doc = null; string labFileName = AppDomain.CurrentDomain.BaseDirectory + "Template\\" + "Test.Lab"; //模板地址 if (!File.Exists(labFileName)) { throw new Exception("沒有找到标签模版"); }for (int i = 0; i < printNum; i++) { labApp = new ApplicationClass(); labApp.Documents.Open(labFileName, false); // 调用设计好的label文件 doc = labApp.ActiveDocument; //可通过配置档进行配置打印信息 doc.Variables.FreeVariables.Item("模板变量名称1").Value = https://www.it610.com/article/PrintParam1; doc.Variables.FreeVariables.Item("模板变量名称2").Value = https://www.it610.com/article/PrintParam2; doc.Variables.FreeVariables.Item("模板变量名称3").Value = https://www.it610.com/article/PrintParam3; doc.Variables.FreeVariables.Item("模板变量名称4").Value = https://www.it610.com/article/PrintParam4; doc.PrintDocument(1); }labApp.Quit(); result = true; } catch (Exception ex) {} return result; } #endregion

dll下载地址:

    推荐阅读