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下载地址:
推荐阅读
- 【计算机网络】介质访问控制
- ASP.NET|ASP.NET MVC从控制器中获取URL值
- [Golang]力扣Leetcode—剑指Offer—数组—17.打印从1到最大的n位数(遍历)
- 注解打印日志和数据链路追踪
- Java应用层数据链路追踪(附优雅打印日志姿势)
- ElasticSearch内部基于_version乐观锁控制机制
- 校招|【校招 --阶段一 系统编程】线程控制
- python中的流程控制
- Spring的IOC控制反转详解
- spring|spring IOC控制反转原理详解