美图齐众专注资阳网站设计 资阳网站制作 资阳网站建设
资阳网站建设公司服务热线:028-86922220

网站建设知识

十年网站开发经验 + 多家企业客户 + 靠谱的建站团队

量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决

C#打印源码的具体实现

C#打印源码也是打印控件的功能之一,这里介绍的C#打印源码可以实现自动打印处理,不过需要mdi文件的支持。

10年积累的成都做网站、网站设计经验,可以快速应对客户对网站的新想法和需求。提供各种问题对应的解决方案。让选择我们的客户得到更好、更有力的网络服务。我虽然不认识你,你也不认识我。但先网站设计后付款的网站建设流程,更有玛曲免费网站建设让你可以放心的选择与我们合作。

打印的原理是:生成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#交错数组浅析

文章名称:C#打印源码的具体实现
文章位置:http://www.zsjierui.cn/article/djshiho.html

其他资讯