资讯

精准传达 • 有效沟通

从品牌网站建设到网络营销策划,从策略到执行的一站式服务

C#怎么利用PrintDocument定制打印单据-创新互联

本篇内容介绍了“C#怎么利用PrintDocument定制打印单据”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

创新互联公司是一家集网站建设,诏安企业网站建设,诏安品牌网站建设,网站定制,诏安网站建设报价,网络营销,网络优化,诏安网站推广为一体的创新建站企业,帮助传统企业提升企业形象加强企业竞争力。可充分满足这一群体相比中小企业更为丰富、高端、多元的互联网需求。同时我们时刻保持专业、时尚、前沿,时刻以成就客户成长自我,坚持不断学习、思考、沉淀、净化自己,让我们为更多的企业打造出实用型网站。

前言

本文是利用PrintDocument定制打印单据的小例子,仅供学习分享使用,如果不足之处,还请指正。

涉及知识点:

PrintDocument :从 Windows 窗体应用程序打印时,定义一种可重用的可发送到打印机上的对象。  PrintPreviewControl :表示 Windows 窗体应用程序打印预览的原始预览部分,没有任何对话框或按钮。  Graphics :GDI+绘图对象  PrinterSettings:设置打印机属性,如:设置属性Copies,可以设置打印份数,默认为1,  PageSettings:指定应用于单页打印的设置  DefaultPageSettings:PrintDocument的属性  PrintPage事件:PrintDocument的事件,通过此事件来绘制需要打印的内容  PaperSize:指定纸张大小  毫米和英寸的换算:打印机是以英寸为单位的,单据设置是以毫米为单位的,所以需要转换

效果图如下:

核心代码

关键代码如下:

using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Drawing.Printing;using System.Linq;using System.Text;using System.Threading.Tasks;using System.Windows.Forms;namespace DemoPrint{ public partial class MainForm : Form {  private int width_p = 200;//单位是mm  private int height_p = 70;//单位是mm  private int margin_lr = 2;//左右边距  private int margin_tb = 2;//上下边距  ///

 /// 需要打印的内容  ///  public List PrintInfos { get; set; }  private PrintHelper printHelper = new PrintHelper();  public MainForm()  {   InitializeComponent();  }  private void MainForm_Load(object sender, EventArgs e)  {   InitInfo();   InitDocument();  }  private void InitInfo() {   PrinterSettings printSetting = new PrinterSettings();   printSetting.PrintRange = PrintRange.AllPages;     int width_in = MM2Inch(width_p);   int height_in = MM2Inch(height_p);   PageSettings pageSetting = new PageSettings(printSetting);   pageSetting.PaperSize = new PaperSize("customer",width_in, height_in);      int margin_lr_in = MM2Inch(margin_lr);   int margin_tb_in = MM2Inch(margin_tb);   pageSetting.Margins = new Margins(margin_lr_in, margin_lr_in, margin_tb_in, margin_tb_in);   this.pdControl.DefaultPageSettings = pageSetting;  }  private void InitDocument() {   List lstPrintInfos = new List();   PrintInfo p0 = new PrintInfo()   {    PrtType = PrintType.Table,    PrtColor = Color.Brown,    Row = int.Parse(this.txtRow.Text.Trim()),    Column = int.Parse(this.txtColumn.Text.Trim()),    Start = new Point(int.Parse(this.txtStart.Text.Trim(new char[] { '(', ')' }).Split(',')[0]), int.Parse(this.txtStart.Text.Trim(new char[] { '(', ')' }).Split(',')[1])),    End = new Point(int.Parse(this.txtEnd.Text.Trim(new char[] { '(', ')' }).Split(',')[0]), int.Parse(this.txtEnd.Text.Trim(new char[] { '(', ')' }).Split(',')[1]))       };   lstPrintInfos.Add(p0);   printHelper.PrintInfos = lstPrintInfos;  }  ///  /// 转换毫米到百分之一英寸  ///  ///  ///  private int MM2Inch(int mm) {   return (int)(mm * 100.0f / 25.4f);  }  ///  /// 打印开始事件  ///  ///  ///  private void pdControl_BeginPrint(object sender, PrintEventArgs e)  {  }  ///  /// 打印事件  ///  ///  ///  private void pdControl_PrintPage(object sender, PrintPageEventArgs e)  {   Font font = new Font("Arial", 14f, FontStyle.Regular);   Graphics g = e.Graphics;   g.PageScale = 1;   g.PageUnit = GraphicsUnit.Millimeter;   //先画一个矩形   Pen lineColor = new Pen(Color.Black, 0.2f);   g.FillRectangle(Brushes.Linen,0,0,width_p,height_p);   printHelper.Print(g);  }  ///  /// 打印结束事件  ///  ///  ///  private void pdControl_EndPrint(object sender, PrintEventArgs e)  {  }  ///  /// 打印  ///  ///  ///  private void btnPrint_Click(object sender, EventArgs e)  {   //打印对话框   if (this.ptDControl.ShowDialog() == DialogResult.OK)   {    this.pdControl.Print();   }  }  private void lblColor_Click(object sender, EventArgs e)  {   ColorDialog f = new ColorDialog();   if (f.ShowDialog() == DialogResult.OK)   {    this.lblColor.BackColor = f.Color;   }  }  ///  /// 刷新  ///  ///  ///  private void btnRefresh_Click(object sender, EventArgs e)  {   List lstPrintInfos = new List();   //表格配置   PrintInfo p0 = new PrintInfo()   {    PrtType = PrintType.Table,    PrtColor = Color.Brown,    Row = int.Parse(this.txtRow.Text.Trim()),    Column = int.Parse(this.txtColumn.Text.Trim()),    Start = new Point(int.Parse(this.txtStart.Text.Trim(new char[] { '(', ')' }).Split(',')[0]), int.Parse(this.txtStart.Text.Trim(new char[] { '(', ')' }).Split(',')[1])),    End = new Point(int.Parse(this.txtEnd.Text.Trim(new char[] { '(', ')' }).Split(',')[0]), int.Parse(this.txtEnd.Text.Trim(new char[] { '(', ')' }).Split(',')[1]))   };   lstPrintInfos.Add(p0);   //标题配置   PrintInfo p1 = new PrintInfo()   {    PrtType = PrintType.Text,    PrtColor = this.lblColor.BackColor,    Content = this.txtTitle.Text.Trim(),    Size = int.Parse(this.txtSize.Text.Trim()),    FontStyle = chkBold.Checked ? FontStyle.Bold : FontStyle.Regular,    Start = new Point(int.Parse(this.txtLocation.Text.Trim(new char[] { '(', ')' }).Split(',')[0]), int.Parse(this.txtLocation.Text.Trim(new char[] { '(', ')' }).Split(',')[1]))   };   lstPrintInfos.Add(p1);   //内容   TextBox[] T = new TextBox[12] { T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12 };   TextBox[] L = new TextBox[12] { L1, L2, L3, L4, L5, L6, L7, L8, L9, L10, L11, L12 };   for (int i = 0; i < 12; i++)   {    PrintInfo p = new PrintInfo()    {     PrtType = PrintType.Text,     PrtColor = Color.Black,     Content = T[i].Text.Trim(),     Size = 12,     FontStyle = FontStyle.Regular,     Start = new Point(int.Parse(L[i].Text.Trim(new char[] { '(', ')' }).Split(',')[0]), int.Parse(L[i].Text.Trim(new char[] { '(', ')' }).Split(',')[1]))    };    lstPrintInfos.Add(p);   }   //打印时间   PrintInfo p2 = new PrintInfo()   {    PrtType = PrintType.Text,    PrtColor = this.lblColor.BackColor,    Content = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"),    Size =11,    FontStyle =FontStyle.Regular,    Start = new Point(145,63)   };   lstPrintInfos.Add(p2);   printHelper.PrintInfos = lstPrintInfos;   this.ppVControl.InvalidatePreview();//刷新文档的预览,重新调用PrintDocument的Print方法  } }}

“C#怎么利用PrintDocument定制打印单据”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注创新互联网站,小编将为大家输出更多高质量的实用文章!


新闻标题:C#怎么利用PrintDocument定制打印单据-创新互联
链接地址:http://cdkjz.cn/article/cejiho.html
多年建站经验

多一份参考,总有益处

联系快上网,免费获得专属《策划方案》及报价

咨询相关问题或预约面谈,可以通过以下方式与我们联系

业务热线:400-028-6601 / 大客户专线   成都:13518219792   座机:028-86922220