C#打印源码的具体实现是怎样的
发表于:2025-01-21 作者:千家信息网编辑
千家信息网最后更新 2025年01月21日,本篇文章给大家分享的是有关C#打印源码的具体实现是怎样的,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。C#打印源码也是打印控件的功能之一
千家信息网最后更新 2025年01月21日C#打印源码的具体实现是怎样的
本篇文章给大家分享的是有关C#打印源码的具体实现是怎样的,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。
C#打印源码也是打印控件的功能之一,这里介绍的C#打印源码可以实现自动打印处理,不过需要mdi文件的支持。
打印的原理是:生成mdi文件,系统碰到mdi的时候会自动以打印的方式处理。所以,不管用什么模板,什么方式;能在PrintPage事件处理中,生成一张要打印内容的图片就OK了!
C#打印源码如下:
#region 打印 private void btnPrint_Click(object sender, EventArgs e) { //打印预览 //PrintPreviewDialog ppd = new PrintPreviewDialog(); PrintDocument pd = new PrintDocument(); //设置边距 Margins margin = new Margins(20, 20, 20, 20); pd.DefaultPageSettings.Margins = margin; ////纸张设置默认 //PaperSize pageSize = new PaperSize("First custom size", 800, 600); //pd.DefaultPageSettings.PaperSize = pageSize; //打印事件设置 pd.PrintPage += new PrintPageEventHandler(this.pd_PrintPage); //ppd.Document = pd; //ppd.ShowDialog(); try { pd.Print(); } catch (Exception ex) { MessageBox.Show(ex.Message, "打印出错", MessageBoxButtons.OK, MessageBoxIcon.Error); pd.PrintController.OnEndPrint(pd, new PrintEventArgs()); } } //打印事件处理 private void pd_PrintPage(object sender, PrintPageEventArgs e) { string date = lblDate.Text; //当前日期 string flowId = lblFlowId.Text; //流水号 string payDate = PayDate.Year.ToString() + "年" + PayDate.Month.ToString() + "月"; //应收年月 string adminId = lblAdminId.Text; //操作员编号 string baseExpense = lblBaseExpense.Text; //应交基本费用 string fine = lblFine.Text; //罚款数目 string upExpense = lblUpExpense.Text; //上月上余 string actualExpense = txtActualExpense.Text; //实际应交费用 string chineseExpense = DecimalToChinese.ConvertSum(actualExpense); //实际应交费用的中文大写 //读取图片模板 Image temp = Image.FromFile(@"Receipts.jpg"); GetResultIntoImage(ref temp, UserId, flowId, date, baseExpense, fine, upExpense, actualExpense, chineseExpense, payDate, adminId); int x = e.MarginBounds.X; int y = e.MarginBounds.Y; int width = temp.Width; int height = temp.Height; Rectangle destRect = new Rectangle(x, y, width, height); e.Graphics.DrawImage(temp, destRect, 0, 0, temp.Width, temp.Height, System.Drawing.GraphicsUnit.Pixel); } /// /// 将收费结果填充到图片模板 /// private void GetResultIntoImage( ref Image temp, string userId, string flowId, string currentDate, string baseExpense, string fine, string upExpense, string actualExpense, string chineseExpense, string payDate, string adminName) { //读取图片模板 Graphics g = Graphics.FromImage(temp); Font f = new Font("宋体", 12); Brush b = new SolidBrush(Color.Black); //填充数据到图片模板(位置要在制作图片模板的时候度量好) g.DrawImage(temp, 0, 0, temp.Width, temp.Height); g.DrawString(userId, f, b, 168, 105); g.DrawString(UserName, f, b, 166, 134); g.DrawString(flowId, f, b, 535, 105); g.DrawString(currentDate, f, b, 535, 134); g.DrawString(baseExpense, f, b, 219, 202); g.DrawString(fine, f, b, 372, 202); g.DrawString(upExpense, f, b, 486, 202); g.DrawString(actualExpense, f, b, 596, 202); g.DrawString(chineseExpense, f, b, 196, 238); g.DrawString(payDate, f, b, 176, 269); g.DrawString(adminName, f, b, 497, 298); g.Dispose(); } #endregion
以上就是C#打印源码的具体实现是怎样的,小编相信有部分知识点可能是我们日常工作会见到或用到的。希望你能通过这篇文章学到更多知识。更多详情敬请关注行业资讯频道。
图片
模板
源码
C#
处理
事件
费用
实际
文件
方式
时候
更多
知识
篇文章
生成
实用
位置
内容
功能
原理
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
java文件上传数据库
松江区数据网络技术服务诚信合作
软件开发在南京工资
国外网络安全相关知识下载
怎么备份还原sql数据库
关系型数据库的表
数据库中用函数计算工龄
矩阵储存服务器管理
提升数字能力守护网络安全
无法连接到安全的服务器
kafka 清空数据库
国众联服务器
博尔塔拉软件开发平均价格
服务器创建多个界面
北京网络安全培训哪个机构好
网络安全要选什么专业
佛山专业软件开发批发价
服务器管理器正在收集数据
毒app软件开发者
数据库ddl模块
软件开发公司如何导入阿米巴
甘南网城互联网科技有限公司
中石油邮箱服务器
qq好友克隆服务器忙
文化类app软件开发
jsp页面显示数据库信息
中国软件开发实力
在线教育设计与实现数据库怎么写
2021国家网络安全宣传周是
初中生网络安全有感