查看电脑上打印机驱动都有哪些,“控制面板”--找到--“设备和打印机”打开如图:选择打勾是默认打印机。

图上打印机中有灰色和深色的打印机。灰色的一般是不可用的驱动。如何唤醒灰色图片打印机呢?

对着打印机驱动右键点击“查看现在正在打印什么”----“打印机”---“脱机使用打印机”勾去掉即可。
如果打印任务列表里面有打印任务都全部取消掉。

成功唤醒打印机,就可以正常调用驱动了。

点击“打印测试页”正常的话打印机会打印出测试页内容出来,如果打印不出来说明一点就是通信端口没有选对。点击“端口”选择对应的端口


直到选择对应的打印机端口可以打印出自测页后,如果选择对应的端口了,还是不能打印,就有点击“查看现在正在打印什么”,取消所有的打印任务消息。再从新测试打印。
接下来我们就进行代码开发了。
使用VS工具开发先创建一个项目,命名为“Drive_PrintFrom”
//获取所以打印机驱动名称
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);
}
}
}
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
{
e.Graphics.DrawString(GetPrintSW().ToString(), titleFont, brush, po);//打印内容
}
catch (Exception ex)
{
MessageBox.Show(this, "打印出错!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
}
//驱动打印
///GetPrintSw方法用来构造打印文本,内部StringBuilder.AppendLine在Drawstring时单独占有一行。
public StringBuilder GetPrintSW()
{
StringBuilder sb = new StringBuilder();
string tou = "达普电子科技有限公司";
string address = "厦门达普";
string saleID = "2010930233330"; //单号
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("电话:18950137415");
sb.AppendLine("谢谢惠顾欢迎下次光临 ");
sb.AppendLine("-----------------------------------------");
return sb;
}
//打印测试
private void printbt_Click(object sender, EventArgs e)
{
string qd = comboBox_drive.Text;//下拉列表选择的驱动名称
var printDocument = new PrintDocument();
//指定打印机
printDocument.PrinterSettings.PrinterName = qd;// "POS58 Printer"; //驱动名称
printDocument.PrintPage += new PrintPageEventHandler(printDocument1_PrintPage);
try
{
printDocument.Print();
}
catch (InvalidPrinterException)
{
}
finally
{
printDocument.Dispose();
}
}


到这里就可以实现驱动开发了,很多小伙伴们遇到的问题不是在代码上,而是驱动设置问题。如驱动端口没有选择对,驱动脱机状态,打印列表阻塞。都会影响到驱动无法打印。
欢迎留言交流!
DEMO下载:https://download.csdn.net/download/huningjun/21507512

本文介绍了如何在C#中调用打印机驱动进行打印操作,包括检查和唤醒打印机、选择正确的通信端口,以及代码实现打印文档的过程。通过示例代码展示了获取打印机列表、设置打印内容和触发打印的方法,强调了驱动设置如端口选择、打印机状态等对打印成功的影响。
3738

被折叠的 条评论
为什么被折叠?



