如何利用C#打印文件

发布时间:2021-06-16 13:55:21 作者:chen
来源:亿速云 阅读:159

这篇文章主要介绍“如何利用C#打印文件”,在日常操作中,相信很多人在如何利用C#打印文件问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”如何利用C#打印文件”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

C#打印文件的过程中,需要对所打印文件进行预览,对版式也有所要求。C#打印文件期间,也有可能出现错误推出,这些都是我们开发人员需要考虑的问题。

以下是C#打印文件的代码。

using System;  using System.Drawing;  using System.Collections;  using System.ComponentModel;  using System.Windows.Forms;  using System.Data;  using System.IO;  using System.Text;  using System.Drawing.Printing;   namespace PrintDemo  ...{      /**//// <summary>      /// Form1 的摘要说明。      /// </summary>      public class DemoForm : System.Windows.Forms.Form      ...{          private System.Windows.Forms.TextBox txtDoc;          private System.Windows.Forms.MainMenu mnuMain;          private System.Windows.Forms.MenuItem mnuFile;          private System.Windows.Forms.MenuItem mnuFileOpen;          private System.Windows.Forms.MenuItem mnuFilePrint;          private System.Windows.Forms.MenuItem mnuFormat;          private System.Windows.Forms.MenuItem mnuFormatFont;          private System.Windows.Forms.OpenFileDialog dlgOpen;          private System.Windows.Forms.FontDialog dlgFont;          private System.Drawing.Printing.PrintDocument pdoc;          /**//// <summary>          /// 必需的设计器变量。          /// </summary>          private System.ComponentModel.Container components = null;          private System.Windows.Forms.MenuItem mnuFilePrintPreview;          private System.Windows.Forms.MenuItem mnuFilePageSetup;          private System.Windows.Forms.PrintPreviewDialog ppd;          private System.Windows.Forms.PageSetupDialog dlgPageSetup;          private System.Windows.Forms.PrintDialog dlgPrinterSetup;          private int totalLines;           public DemoForm()          ...{              //              // Windows 窗体设计器支持所必需的              //              InitializeComponent();               //              // TODO: 在 InitializeComponent 调用后添加任何构造函数代码              //          }           /**//// <summary>          /// 清理所有正在使用的资源。          /// </summary>          protected override void Dispose( bool disposing )          ...{              if( disposing )              ...{                  if (components != null)                   ...{                      components.Dispose();                  }              }              base.Dispose( disposing );          }           Windows 窗体设计器生成的代码#region Windows 窗体设计器生成的代码          /**//// <summary>          /// 设计器支持所需的方法 - 不要使用代码编辑器修改          /// 此方法的内容。          /// </summary>          private void InitializeComponent()          ...{              System.Resources.ResourceManager resources = new System.Resources.ResourceManager(typeof(DemoForm));              this.txtDoc = new System.Windows.Forms.TextBox();              this.mnuMain = new System.Windows.Forms.MainMenu();              this.mnuFile = new System.Windows.Forms.MenuItem();              this.mnuFileOpen = new System.Windows.Forms.MenuItem();              this.mnuFilePrint = new System.Windows.Forms.MenuItem();              this.mnuFormat = new System.Windows.Forms.MenuItem();              this.mnuFormatFont = new System.Windows.Forms.MenuItem();              this.dlgOpen = new System.Windows.Forms.OpenFileDialog();              this.dlgFont = new System.Windows.Forms.FontDialog();              this.pdoc = new System.Drawing.Printing.PrintDocument();              this.mnuFilePrintPreview = new System.Windows.Forms.MenuItem();              this.mnuFilePageSetup = new System.Windows.Forms.MenuItem();              this.ppd = new System.Windows.Forms.PrintPreviewDialog();              this.dlgPageSetup = new System.Windows.Forms.PageSetupDialog();              this.dlgPrinterSetup = new System.Windows.Forms.PrintDialog();              this.SuspendLayout();              //               // txtDoc              //               this.txtDoc.Dock = System.Windows.Forms.DockStyle.Fill;              this.txtDoc.Location = new System.Drawing.Point(0, 0);              this.txtDoc.Multiline = true;              this.txtDoc.Name = "txtDoc";              this.txtDoc.ScrollBars = System.Windows.Forms.ScrollBars.Both;              this.txtDoc.Size = new System.Drawing.Size(560, 309);              this.txtDoc.TabIndex = 0;              this.txtDoc.Text = "";              this.txtDoc.WordWrap = false;              this.txtDoc.TextChanged += new System.EventHandler(this.txtDoc_TextChanged);              //               // mnuMain              //               this.mnuMain.MenuItems.AddRange(new System.Windows.Forms.MenuItem[] ...{                                                                                      this.mnuFile,                                                                                      this.mnuFormat});              //               // mnuFile              //               this.mnuFile.Index = 0;              this.mnuFile.MenuItems.AddRange(new System.Windows.Forms.MenuItem[] ...{                                                                                      this.mnuFileOpen,                                                                                      this.mnuFilePageSetup,                                                                                      this.mnuFilePrintPreview,                                                                                      this.mnuFilePrint});              this.mnuFile.Text = "文件(&F)";              //               // mnuFileOpen              //               this.mnuFileOpen.Index = 0;              this.mnuFileOpen.Text = "打开(&O)...";              this.mnuFileOpen.Click += new System.EventHandler(this.mnuFileOpen_Click);              //               // mnuFilePrint              //               this.mnuFilePrint.Index = 3;              this.mnuFilePrint.Text = "打印(&P)...";              this.mnuFilePrint.Click += new System.EventHandler(this.mnuFilePrint_Click);              //               // mnuFormat              //               this.mnuFormat.Index = 1;              this.mnuFormat.MenuItems.AddRange(new System.Windows.Forms.MenuItem[] ...{                                                                                        this.mnuFormatFont});              this.mnuFormat.Text = "格式(&F)";              //               // mnuFormatFont              //               this.mnuFormatFont.Index = 0;              this.mnuFormatFont.Text = "字体(&O)";              this.mnuFormatFont.Click += new System.EventHandler(this.mnuFormatFont_Click);              //               // dlgOpen              //               this.dlgOpen.Filter = "文本文件|*.txt|所有文件|*.*";              //               // pdoc              //               this.pdoc.DocumentName = "abc";              this.pdoc.BeginPrint += new System.Drawing.Printing.PrintEventHandler(this.pdoc_BeginPrint);              this.pdoc.EndPrint += new System.Drawing.Printing.PrintEventHandler(this.pdoc_EndPrint);              this.pdoc.PrintPage += new System.Drawing.Printing.PrintPageEventHandler(this.pdoc_PrintPage);              //               // mnuFilePrintPreview              //               this.mnuFilePrintPreview.Index = 2;              this.mnuFilePrintPreview.Text = "打印预览...";              this.mnuFilePrintPreview.Click += new System.EventHandler(this.mnuFilePrintPreview_Click);              //               // mnuFilePageSetup              //               this.mnuFilePageSetup.Index = 1;              this.mnuFilePageSetup.Text = "页面设置...";              this.mnuFilePageSetup.Click += new System.EventHandler(this.mnuFilePageSetup_Click);              //               // ppd              //               this.ppd.AutoScrollMargin = new System.Drawing.Size(0, 0);              this.ppd.AutoScrollMinSize = new System.Drawing.Size(0, 0);              this.ppd.ClientSize = new System.Drawing.Size(400, 300);              this.ppd.Document = this.pdoc;              this.ppd.Enabled = true;              this.ppd.Icon = ((System.Drawing.Icon)(resources.GetObject("ppd.Icon")));              this.ppd.Location = new System.Drawing.Point(317, 17);              this.ppd.MinimumSize = new System.Drawing.Size(375, 250);              this.ppd.Name = "ppd";              this.ppd.TransparencyKey = System.Drawing.Color.Empty;              this.ppd.Visible = false;              //               // dlgPageSetup              //               this.dlgPageSetup.Document = this.pdoc;              //               // dlgPrinterSetup              //               this.dlgPrinterSetup.Document = this.pdoc;              //               // DemoForm              //               this.AutoScaleBaseSize = new System.Drawing.Size(6, 14);              this.ClientSize = new System.Drawing.Size(560, 309);              this.Controls.Add(this.txtDoc);              this.Menu = this.mnuMain;              this.Name = "DemoForm";              this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;              this.Text = "打印";              this.ResumeLayout(false);           }          #endregion           /**//// <summary>          /// 应用程序的主入口点。          /// </summary>          [STAThread]          static void Main()           ...{              Application.Run(new DemoForm());          }           private void mnuFileOpen_Click(object sender, System.EventArgs e)          ...{              if (dlgOpen.ShowDialog()==DialogResult.OK)              ...{                  StreamReader sr=null;                  try                 ...{                      sr=new StreamReader(dlgOpen.FileName,Encoding.Default,true);                      txtDoc.Text=sr.ReadToEnd();                  }                  catch                 ...{                      MessageBox.Show("打开文件失败!","错误",MessageBoxButtons.OK,MessageBoxIcon.Error);                  }                  finally                 ...{                      if (sr!=null) sr.Close();                  }              }          }           private void mnuFormatFont_Click(object sender, System.EventArgs e)          ...{              dlgFont.Font=txtDoc.Font;              if (dlgFont.ShowDialog()==DialogResult.OK)              ...{                  txtDoc.Font=dlgFont.Font;              }          }           private void pdoc_BeginPrint(object sender, System.Drawing.Printing.PrintEventArgs e)          ...{              //MessageBox.Show("开始打印啦");          }           private void pdoc_EndPrint(object sender, System.Drawing.Printing.PrintEventArgs e)          ...{              //MessageBox.Show("打印结束");          }           private void pdoc_PrintPage(object sender, System.Drawing.Printing.PrintPageEventArgs e)          ...{              Graphics g=e.Graphics;              float lineHeight=txtDoc.Font.GetHeight(g);              int linesPerPage=(int)(e.MarginBounds.Height/lineHeight);              int count=0;  //本页已打印行数               while (count<linesPerPage && totalLines<txtDoc.Lines.Length)              ...{                  g.DrawString(txtDoc.Lines[totalLines],txtDoc.Font,Brushes.Black,e.MarginBounds.X,e.MarginBounds.Y+lineHeight*count);                  count++;                  totalLines++;              }               if (totalLines<txtDoc.Lines.Length)              ...{                  e.HasMorePages=true;              }              else             ...{                  e.HasMorePages=false;                  totalLines=0;              }          }           private void mnuFilePrint_Click(object sender, System.EventArgs e)          ...{              if (dlgPrinterSetup.ShowDialog()==DialogResult.OK)              ...{                  pdoc.Print();  //开始执行打印              }          }           private void txtDoc_TextChanged(object sender, System.EventArgs e)          ...{                    }           private void mnuFilePrintPreview_Click(object sender, System.EventArgs e)          ...{              ppd.ShowDialog();          }           private void mnuFilePageSetup_Click(object sender, System.EventArgs e)          ...{              Margins oldMargins=dlgPageSetup.PageSettings.Margins;              dlgPageSetup.PageSettings.Margins=new Margins((int)(oldMargins.Left*2.54),(int)(oldMargins.Right*2.54),(int)(oldMargins.Top*2.54),(int)(oldMargins.Bottom*2.54));              if (dlgPageSetup.ShowDialog()==DialogResult.Cancel)              ...{                  dlgPageSetup.PageSettings.Margins=oldMargins;              }          }      }  }

到此,关于“如何利用C#打印文件”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注亿速云网站,小编会继续努力为大家带来更多实用的文章!

推荐阅读:
  1. C# 惠普打印机 打印
  2. C#小票打印(通用)

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

上一篇:C#使用块来分组语句的方法

下一篇:Qt串口通信开发之QSerialPort模块Qt串口通信接收数据不完整怎么办

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》