C#调用系统打印机(XP-58小票打印)
C#调用系统打印机(XP-58小票打印)
需要安装XP-58驱动。
// An highlighted block
using System;
using System.Drawing;
using System.Drawing.Printing;
using System.Globalization;
using System.Management;
using System.Windows.Forms;namespace 实验
{public class USBPrinter{private string defaultPrinter;//private string streamtext;private PrintDocument docToPrint = new PrintDocument();//创建一个PrintDocument的实例private string carCardNum;private string trashTypeName;private string trashWeight;private string driverUserName;private string loginUserName;public USBPrinter(){//// TODO: 在此处添加构造函数逻辑////this.docToPrint.DefaultPageSettings.PaperSize = new PaperSize("Custum", default, 600);this.docToPrint.PrintPage += new PrintPageEventHandler(DocToPrint_PrintPage);}//将事件处理函数添加到PrintDocument的PrintPage中public bool IsDefaultPrinter(){using (PrintDocument pd = new PrintDocument()){string sDefault = pd.PrinterSettings.PrinterName;//默认打印机名//MessageBox.Show(sDefault);if (sDefault == "XP-58"){defaultPrinter = sDefault;return true;}else{defaultPrinter = "默认打印机不是XP-58";return false;}}}public enum PrinterStatus{其他状态 = 1, //比如 暂停状态未知,空闲, //就绪状态正在打印,预热,停止打印,打印中,离线 //脱机 状态}public PrinterStatus GetPrinterStat(string PrinterDevice){PrinterStatus ret = 0;string path = @"win32_printer.DeviceId='" + PrinterDevice + "'";ManagementObject printer = new ManagementObject(path);printer.Get();if ((bool)printer.Properties["WorkOffline"].Value){return PrinterStatus.离线;//MessageBox.Show("离线");}else{ret = (PrinterStatus)Convert.ToInt32(printer.Properties["PrinterStatus"].Value);//MessageBox.Show(Convert.ToString(printer.Properties["PrinterStatus"].Value));return ret;}}public void StartPrint(string carCardNum, string trashTypeName, string trashWeight, string driverUserName, string loginUserName){//this.streamtext = text;this.carCardNum = carCardNum;this.trashTypeName = trashTypeName;this.trashWeight = trashWeight;this.driverUserName = driverUserName;this.loginUserName = loginUserName;if (IsDefaultPrinter()){docToPrint.Print();}else{MessageBox.Show(defaultPrinter);}Release();}private void DocToPrint_PrintPage(object sender, PrintPageEventArgs e)//设置打印机开始打印的事件处理函数 e.MarginBounds.Y{e.Graphics.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.NearestNeighbor;e.Graphics.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.HighQualityBicubic;//像素偏移方式,像素在水平和垂直距离上均偏移若干个单位,以进行高速锯齿消除。e.Graphics.PixelOffsetMode = System.Drawing.Drawing2D.PixelOffsetMode.Half;//也可以通过设置Graphics对不平平滑处理方式解决,代码如下: //e.Graphics.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality;Font printFont = new Font("Arial", (float)9.3, FontStyle.Regular);//StringFormat stringFormat = new StringFormat();// Draw the content.//string text = streamtext;//e.Graphics.DrawString(text, printFont, System.Drawing.Brushes.Black, 0, 0);int marginTop = 10;int dis = 25;e.Graphics.DrawString(" ", printFont, Brushes.Black, 0, 0);e.Graphics.DrawString("回收凭条", new Font("Arial", 10, FontStyle.Bold), Brushes.Black, 63, marginTop + dis * 2);e.Graphics.DrawString("时 间: " + DateTime.Now.ToString("G", CultureInfo.CreateSpecificCulture("zh-CN")), printFont, Brushes.Black, 0, marginTop + dis * 4);e.Graphics.DrawString("回收类型: " + trashTypeName, printFont, Brushes.Black, 0, marginTop + dis * 5);e.Graphics.DrawString("回收净重: " + trashWeight + "kg", printFont, Brushes.Black, 0, marginTop + dis * 6);e.Graphics.DrawString(".", printFont, Brushes.Gray, 0, dis * 11 + 15);}private void Release(){docToPrint.Dispose();trashTypeName = null;trashWeight = null;carCardNum = null;driverUserName = null;loginUserName = null;}}
}
在form窗口调用
USBPrinter printer = new USBPrinter();printer.IsDefaultPrinter();//MessageBox.Show(printer.GetPrinterStat("XP-58").ToString());try{//if (printer.GetPrinterStat("XP-58").ToString() == "离线")//{// MessageBox.Show("打印机XP-58未连接");// return;//}//else if (printer.GetPrinterStat("XP-58").ToString() == "其他状态" || printer.GetPrinterStat("XP-58").ToString() == "未知")//{// MessageBox.Show("打印机XP-58连接出错");// return;//}printer.StartPrint("111", "111", "111", "111", "111");}catch (Exception ex){MessageBox.Show(ex.Message);}
C#调用系统打印机(XP-58小票打印)相关推荐
- pb11.5调用系统打印机 Function ulong ShellExecute(ulong hwnd,ref string lpOperation,ref string lpFile,ref st
pb11.5调用系统打印机 Function ulong ShellExecute(ulong hwnd,ref string lpOperation,ref string lpFile,ref st ...
- java打印字符串显示_JAVA调用系统打印机打印字符串
用java实现打印,java.awt中提供了一些打印的API,要实现打印,首先要获得打印对象,然后继承Printable实现接口方法print,以便打印机进行打印,最后用用Graphics2D直接输出 ...
- js直接调用系统打印机进行打印
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- C#调用系统打印机和收银钱箱
打印示例: StringBuilder builder = new StringBuilder(); builder.AppendLine("--------------打印测试------ ...
- codesoft指定打印机打印_巧用win32print来控制windows系统打印机并推送打印任务
小爬最近接到的一个需求是:将windows系统下的打印任务批量有序传输给网络打印机,实现批量有序打印. 用户先从公司的OA(B/S模式)系统下 打印指定内容的表单以及表单中的附件内容.这个问题 ...
- windows下如何用python控制打印机打印_巧用win32print来控制windows系统打印机并推送打印任务...
小爬最近的一个需求是:将windows系统下的打印任务批量有序给到网络打印机. 用户先从公司的OA(B/S模式)系统下 打印指定内容的表单以及表单中的附件内容.这个问题可以这样分解: 1.抓包,得到O ...
- (打印机Printer)小票打印
源码路径为 E:\WGY\C#学习\一套开源的企业业务系统框架Winform\586570 31天学会CRM项目开发pdf+源代码\31天学会CRM项目开发-源代码\003 实例及拓展练习\Print ...
- pyqt5 listview 不默认选中_pyqt5 商店小票打印的实现模板
说明 最近在用pyqt5做商店小票打印,用的是得力DL-581PW(NEW)热敏小票打印机. 商店小票打印,属于escpos打印. 在网上找了很多实现方法,看了很多相关文章,经历了很多困难,最后终于实 ...
- Android蓝牙打印小票,仿美团外卖小票打印
这个一个Android蓝牙打印小票demo,类似美团外卖小票打印 自适应排版小票格式,一行两列和三列轻松搞定,文本长短不用愁 先看一下效果图: demo里主要是使用汉印打印机进行蓝牙小票打印,它还支持 ...
- pyqt5 商店小票打印的实现模板
说明 最近在用pyqt5做商店小票打印,用的是得力DL-581PW(NEW)热敏小票打印机. 商店小票打印,属于escpos打印. 在网上找了很多实现方法,看了很多相关文章,经历了很多困难,最后终于实 ...
最新文章
- 盘点|应用落地,构建城市“大脑”
- Design Pattern - Command (C#)
- 线性代数笔记:Kronecker积
- SpringMVC学习10之AJAX初体验和了解
- JVM实战与原理---类加载机制
- Java黑皮书课后题第7章:*7.22(计算一个字符串中大写字母的数目)编写程序,从命令行输入一个字符串,然后显示字符串中大写字母的数目
- iOS开发事件分发机制—响应链—手势影响
- 【每日一题】4月27日题目精讲 Removal
- valhalla 插件_Valhalla项目的价值
- leetcode111. 二叉树的最小深度(队列)
- Vue系列vue-router的嵌套使用(四)
- 视觉SLAM笔记(38) 3D-3D: ICP
- 项目背景怎么描述_培训回顾 |第六届“互联网+”之创业大赛项目计划书撰写
- Vultr 修改 Root 密码
- Visual C++ 时尚编程百例002(MFC窗口)
- lufylegend引擎制作接水果小游戏
- 自学程序员和科班程序员差别到底在哪里?
- 苏宁易购开放平台_苏宁易购半年报解读:业态场景与零售服务的“两手抓”
- word取消限制编辑
- 太牛了!某大佬程序猿北漂16年,从睡天桥到身价数千万,衣锦还乡重庆住豪宅!...