C#打印机套打三联单
三联单长这样:
打印出来的效果长这样:
正题:
如果在以下步骤中,有部分步骤因为打印机驱动原因没法实现,可以点我下载,或者自己根据打印机型号去官网下载相应打印机驱动。
一、打印机配置
- 将针式打印机连接入电脑,进入“控制面板”-》“设备和打印机”,如果打印机那一栏出现了刚连入的打印机,说明连接成功。
- 如图:
- 这样就配置好啦,但是还有小小的最后一个小步骤需要注意。每次使用打印机时,将左边的齿轮推至0刻度,并将单据卡在齿轮上:
二、C#代码
- 添加三个按钮:分别是“设置打印机”、“设置打印机纸张”、“直接打印”
- 添加控件printDocument:
- “设置打印机”、“设置打印机纸张”点击事件代码:
/// <summary>
/// 打印机设置
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void 打印机设置ToolStripMenuItem_Click(object sender, EventArgs e)
{PrintDialog printDialog = new PrintDialog();printDialog.Document = printDocument1;printDialog.ShowDialog();
}
/// <summary>
/// 设置打印机纸张
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void 设置打印机纸张ToolStripMenuItem_Click(object sender, EventArgs e)
{PageSetupDialog pageSetupDialog = new PageSetupDialog();pageSetupDialog.Document = printDocument1;pageSetupDialog.ShowDialog();
}
- “直接打印”按钮代码:
/// <summary>
/// 资金到帐单打印
/// 这里写在for循环里面调用,是为了连续打印
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void 直接打印ToolStripMenuItem_Click(object sender, EventArgs e)
{// 获取需要打印的资金到帐单结果集List<fundBillInfoPrint> tFundBillInfoList = getTFundBillInfoPrint();for (int i = 0;i < tFundBillInfoList.Count; i++){fundBillInfoPrint = tFundBillInfoList[i];try{PrintPreviewDialog printPreviewDialog = new PrintPreviewDialog();printPreviewDialog.Document = printDocument1;printDocument1.PrintPage += new System.Drawing.Printing.PrintPageEventHandler(printDocument1_PrintPage);printDocument1.Print();// 把上面代码注释掉,下面注释的代码打开即可弹出预览框/*PrintPreviewDialog printPreviewDialog = new PrintPreviewDialog();printPreviewDialog.Document = printDocument1;printDocument1.PrintPage += new System.Drawing.Printing.PrintPageEventHandler(printDocument1_PrintPage);if (printPreviewDialog.ShowDialog() == DialogResult.OK){printDocument1.Print();}*/}catch (Exception excep){MessageBox.Show(excep.Message, "打印出错", MessageBoxButtons.OK, MessageBoxIcon.Error);}}}
/// <summary>
/// 打印使用的临时全局变量
/// </summary>
TFundBillInfo fundBillInfoPrint = null;
/// <summary>
/// 打印事件
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void printDocument1_PrintPage(object sender, System.Drawing.Printing.PrintPageEventArgs e)
{if (fundBillInfoPrint != null){Graphics g = e.Graphics;this.Postion(g, fundBillInfoPrint);}
}/// <summary>
/// 资金到帐单打印公共类
/// </summary>
/// <param name="e"></param>
/// <param name="fundBillInfo">打印数据</param>
public static void Postion(Graphics e, TFundBillInfo fundBillInfo)
{// 获取全局偏移量,作用是为了可全局调控整个打印单整体偏移,便于矫正int x = SysContent.xGlobalOffsetValue;int y = SysContent.yGlobalOffsetValue;Font fontNormalContent = new Font("华文楷体", 12F, FontStyle.Regular, GraphicsUnit.Point, ((byte)(134)));Pen pen = new Pen(Color.Black, 1);// 单据日期string fDate = fundBillInfo.fDate;// 收款银行名称string fBankName = fundBillInfo.fBankName;// 收款银行账号string fBankNumber = fundBillInfo.fBankNumber;// 总流水号string fOrder = fundBillInfo.fOrder;// 单位编码string fClientNum = string.IsNullOrEmpty(fundBillInfo.fClientNum) ? "" : fundBillInfo.fClientNum;// 单位名称string fClientName = fundBillInfo.fClientName;// 单位流水号string fClientOrder = fundBillInfo.fClientOrder;// 到账时间string fPayDate = DateTime.Parse(fundBillInfo.fPayDate).ToString("yyyy-MM-dd");// 付款单位string fPayClient = fundBillInfo.fPayClient;// 资金类别string fFundTypeName = fundBillInfo.fFundTypeName;// 到账金额(大写)string fAmountBigStr = fundBillInfo.fAmountBigStr;// 到账金额string fAmount = Convert.ToDecimal(fundBillInfo.fAmount.ToString()).ToString("0.00");// 补齐字符串金额为11位if (fAmount.Contains(".")){fAmount = fAmount.Replace(".", "");}//fAmount = fAmount.PadLeft(11, '0');// 摘要信息string fExp = fundBillInfo.fExp;// 收款银行名称e.DrawString(fBankName, fontNormalContent, Brushes.Black, 145 + x, 85 + y);// 收款银行账号e.DrawString(fBankNumber, fontNormalContent, Brushes.Black, 330 + x, 85 + y);// 总流水号e.DrawString(fOrder, fontNormalContent, Brushes.Black, 635 + x, 85 + y);// 单位编码e.DrawString(fClientNum, fontNormalContent, Brushes.Black, 145 + x, 115 + y);// 单位名称e.DrawString(fClientName, fontNormalContent, Brushes.Black, 330 + x, 115 + y);// 单位流水号e.DrawString(fClientOrder, fontNormalContent, Brushes.Black, 635 + x, 115 + y);// 到账时间e.DrawString(fPayDate, fontNormalContent, Brushes.Black, 145 + x, 145 + y);// 付款单位e.DrawString(fPayClient, fontNormalContent, Brushes.Black, 330 + x, 145 + y);// 资金类别e.DrawString(fFundTypeName, fontNormalContent, Brushes.Black, 635 + x, 145 + y);// 到账金额(大写)e.DrawString(fAmountBigStr, fontNormalContent, Brushes.Black, 190 + x, 185 + y);// 到账金额-每两个字符间添加空格填充int fAmountXLocation = ((11 - fAmount.Length) * 18) + 545;fAmount = Regex.Replace(fAmount, @"(?<=.{1}).{1}", " $0");e.DrawString(fAmount, fontNormalContent, Brushes.Black, fAmountXLocation + x, 195 + y);// 摘要信息e.DrawString(fExp, fontNormalContent, Brushes.Black, 550 + x, 230 + y);// 单据日期DateTime dt = DateTime.Parse(fDate);string year = dt.Year.ToString();string month = dt.Month.ToString();string day = dt.Day.ToString();e.DrawString(year, fontNormalContent, Brushes.Black, 315 + x, 60 + y);e.DrawString(month, fontNormalContent, Brushes.Black, 375 + x, 60 + y);e.DrawString(day, fontNormalContent, Brushes.Black, 420 + x, 60 + y);
}
最后,当然就搞定啦!
C#打印机套打三联单相关推荐
- 图解如何用打印机套打快递单
相信淘宝上大多数卖家都是使用手工填写快递单的,这样的做法有一些不好的地方: 1.手工填写容易填写错误,如果当时发现了就只能涂改或换一张单子.涂改会让买家感觉卖家不专业,如果换一张单子,呵呵,有一些快递 ...
- 基于Chromium开发的称重软件,集称重、计价、打印于一体,支持耀华、顶尖等多个厂家设备型号
技术方案: 1.运行时使用.Net Framework4.6框架,界面使用WPF与Chromium. 2.上位机与下位机使用串口对接每家设备协议,上位机与UI使用WebSocket通讯. 3.数据库使 ...
- 针式打印机用哪个软件打印销售单
针式打印机与激光打印机的不同之外就是打印方式不同,针式的需要用到带针脚的打印头,所以打印的纸张需要用到多联单据纸,例如:两联单,三联单,四联单等,当然用来打印A4的也可以,但是容易损坏. 明确了打印技 ...
- java操作跨页的word cell,“excle如何打印不出现断行“EXCEL中,如何不跨页断行打印或显示,谢谢...
EXCEL中,如何不跨页断行打印或显示,谢谢 打印预览--页面设置--工作表--网格线(打勾) 试试! java导入excel 判断当前行有没有数据 工作中用到入excel一个方法,你还可以通过一些插 ...
- 2022-2028年中国打印耗材市场现状调研与进展趋势分析报告
[报告类型]产业研究 [出版时间]即时更新(交付时间约3个工作日) [发布机构]智研瞻产业研究院 [报告格式]PDF版 本报告介绍了打印耗材市场行业相关概述.中国打印耗材市场行业运行环境.分析了中国打 ...
- 顺时针打印矩阵 python
前言 题目:输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下矩阵: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 则依次打印出数字1,2 ...
- log4j屏蔽掉某个包下的log日志打印
在log4j的配置文件下配置 ## Disable other log log4j.logger.com.summaryday.framework.db=OFF log4j定义了8个级别的log(除去 ...
- 彻底解决python打印结果省略号的问题显示宽度
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/wolf1132/article/det ...
- php语+言教程,写给thinkphp开发者的laravel系列教程(九)打印数据-Fun言
php这种脚本语言调试起来是很方便的: 大多时候看报错打印一下数据就知道问题所在了: php 内置了常用打印函数 print 和 var_dump : 但是打印出来的样式实在让人目瞪狗呆: think ...
- HarmonyOS 怎样打印log/日志的打印
HarmonyOS 怎样打印log HarmonyOS提供了HiLog日志系统,所以我们可以使用HiLog 来打印日志 从HiLog的源码可以看到里面有一个HiLogLabel 下面在跳到HiLogL ...
最新文章
- 欢迎大家批评:CSDN Blog用户体验调查
- SVN中检出(check out) 和 导出(export) 的区别
- boost::statechart模块实现类型信息测试
- 依赖注入_set方法注入_构造器注入
- Promise读取多个文件
- SQL经典面试题(二)
- 短信平台接口怎么选择?看这一篇就够了
- (转发)详解汽车UDS诊断协议(二)
- Linux下dig命令使用
- js打开新窗口的方法总结
- 【图像增强】基于matlab直方图均衡化图像增强【含Matlab源码 960期】
- xml python et_python xml处理
- Verilog中reg和wire的区别
- 开发视频实时直播需要用到哪些技术?
- Redis中的数据类型及其应用场景
- spark on yarn实战 +HA
- 全智通A+常见问题汇总解答—A+新维修单登记保存后会把原来的车辆信息中的商业险保险险种的内容清除。
- Animator 播放多片段动画
- jdbc读取mysql数据库_Ecplise 中利用 JDBC 连接 Mysql 数据库读取数据
- [web面试必备]深入浅出HTTP协议