C#打印源码的具体实现

开发 后端
这里将介绍C#打印源码的具体实现,打印在.NET中的实现在一些工具的帮助下,不会很困难,但也要注意参数的调整。希望本文对大家有所帮助。
C#打印源码也是打印控件的功能之一,这里介绍的C#打印源码可以实现自动打印处理,不过需要mdi文件的支持。

打印的原理是:生成mdi文件,系统碰到mdi的时候会自动以打印的方式处理。所以,不管用什么模板,什么方式;能在PrintPage事件处理中,生成一张要打印内容的图片就OK了!

C#打印源码如下:

  1. #region 打印  
  2.         private void btnPrint_Click(object sender, EventArgs e)  
  3.         {  
  4.             //打印预览  
  5.             //PrintPreviewDialog ppd = new PrintPreviewDialog();  
  6.             PrintDocument pd = new PrintDocument();  
  7.             //设置边距  
  8.             Margins margin = new Margins(20, 20, 20, 20);  
  9.             pd.DefaultPageSettings.Margins = margin;  
  10.             ////纸张设置默认  
  11.             //PaperSize pageSize = new PaperSize("First custom size", 800, 600);  
  12.             //pd.DefaultPageSettings.PaperSize = pageSize;  
  13.             //打印事件设置  
  14.             pd.PrintPage += new PrintPageEventHandler(this.pd_PrintPage);  
  15.             //ppd.Document = pd;  
  16.             //ppd.ShowDialog();  
  17.             try 
  18.             {  
  19.                 pd.Print();  
  20.             }  
  21.             catch (Exception ex)  
  22.             {  
  23.                 MessageBox.Show(ex.Message, "打印出错", MessageBoxButtons.OK, MessageBoxIcon.Error);  
  24.                 pd.PrintController.OnEndPrint(pd, new PrintEventArgs());  
  25.             }  
  26.         }  
  27.         //打印事件处理  
  28.         private void pd_PrintPage(object sender, PrintPageEventArgs e)  
  29.         {  
  30.             string date = lblDate.Text; //当前日期  
  31.             string flowId = lblFlowId.Text; //流水号  
  32.             string payDate = PayDate.Year.ToString() + "年" + PayDate.Month.ToString() + "月"//应收年月  
  33.             string adminId = lblAdminId.Text; //操作员编号  
  34.             string baseExpense = lblBaseExpense.Text; //应交基本费用  
  35.             string fine = lblFine.Text; //罚款数目  
  36.             string upExpense = lblUpExpense.Text; //上月上余  
  37.             string actualExpense = txtActualExpense.Text; //实际应交费用  
  38.             string chineseExpense = DecimalToChinese.ConvertSum(actualExpense); //实际应交费用的中文大写  
  39.  
  40.    //读取图片模板  
  41.             Image temp = Image.FromFile(@"Receipts.jpg");  
  42.             GetResultIntoImage(ref temp, UserId, flowId, date, baseExpense, fine, upExpense, actualExpense, chineseExpense, payDate, adminId);  
  43.             int x = e.MarginBounds.X;  
  44.             int y = e.MarginBounds.Y;  
  45.             int width = temp.Width;  
  46.             int height = temp.Height;  
  47.             Rectangle destRect = new Rectangle(x, y, width, height);  
  48.             e.Graphics.DrawImage(temp, destRect, 0, 0, temp.Width, temp.Height, System.Drawing.GraphicsUnit.Pixel);  
  49.         }  
  50.  
  51.         ///   
  52.         /// 将收费结果填充到图片模板  
  53.         /// 
  54.  
  55.         private void GetResultIntoImage(  
  56.             ref Image temp,  
  57.             string userId,  
  58.             string flowId,  
  59.             string currentDate,  
  60.             string baseExpense,  
  61.             string fine,  
  62.             string upExpense,  
  63.             string actualExpense,  
  64.             string chineseExpense,  
  65.             string payDate,  
  66.             string adminName)  
  67.         {  
  68.             //读取图片模板  
  69.             Graphics g = Graphics.FromImage(temp);  
  70.  
  71.             Font f = new Font("宋体", 12);  
  72.             Brush b = new SolidBrush(Color.Black);  
  73.               
  74.    //填充数据到图片模板(位置要在制作图片模板的时候度量好)  
  75.             g.DrawImage(temp, 0, 0, temp.Width, temp.Height);  
  76.             g.DrawString(userId, f, b, 168, 105);  
  77.             g.DrawString(UserName, f, b, 166, 134);  
  78.             g.DrawString(flowId, f, b, 535, 105);  
  79.             g.DrawString(currentDate, f, b, 535, 134);  
  80.             g.DrawString(baseExpense, f, b, 219, 202);  
  81.             g.DrawString(fine, f, b, 372, 202);  
  82.             g.DrawString(upExpense, f, b, 486, 202);  
  83.             g.DrawString(actualExpense, f, b, 596, 202);  
  84.             g.DrawString(chineseExpense, f, b, 196, 238);  
  85.             g.DrawString(payDate, f, b, 176, 269);  
  86.             g.DrawString(adminName, f, b, 497, 298);  
  87.  
  88.             g.Dispose();  
  89.         }  
  90.         #endregion  

【编辑推荐】

  1. C# GreetPeople方法
  2. C# Hashtable对象分析
  3. 常用C# Arraylist的介绍
  4. C# Observer设计模式
  5. C#交错数组浅析
责任编辑:彭凡 来源: 博客园
相关推荐

2009-08-26 12:59:08

C#打印设置

2009-08-26 09:54:45

C#打印预览C#打印

2009-08-26 13:22:24

C#打印程序

2009-09-11 09:59:47

2009-08-26 10:43:14

C#实现打印功能

2009-08-26 11:32:37

C#打印文档

2009-08-26 11:07:36

C#打印窗体

2009-08-26 09:22:44

C#实现打印功能

2009-09-03 14:49:49

C#实现网络点对点

2009-08-31 10:38:34

C#变量初始化

2011-05-20 16:07:29

C#

2009-08-31 13:53:03

C#创建一个文件

2009-09-27 10:43:13

C#合并多个WORD文

2009-09-02 16:46:12

C# GIS

2009-08-26 14:31:08

C#打印文件

2009-08-26 12:14:44

C#打印设置

2009-08-26 14:48:21

C#打印分页

2009-08-26 13:48:31

C#打印条码

2009-08-26 13:36:33

C#打印控件

2009-09-01 18:29:10

C#继承C#多态
点赞
收藏

51CTO技术栈公众号