在windows应用程序中文档的打印是一项非常重要的功能,在以前一直是一个非常复杂的工作,Microsoft .Net Framework的打印功能都以组件的方式提供,为程序员提供了很大的方便,但是这几个组件的使用还是很复杂的,有必要解释一下。
打印操作通常包括以下四个功能:
1 打印设置 设置打印机的一些参数,比如更改打印机驱动程序等;
2 页面设置 设置页面大小纸张类型等
3 打印预览 类似于word中的打印预览
4 打印
实现打印功能的核心是PrintDocument类这个类属于System.Drawing.Printing名字空间这个类封装了当前的打印设置页面设置以及所有的与打印有关的事件和方法
这个类包括以下几个属性,事件和方法
1、PrinterSettings 属性
存放打印机的设置信息,这个属性不需要程序员设置,因为它是由打印对话框获取的.
2、PrintCountroller 属性
控制打印过程
3、DefaultPageSettings 属性
存放页面设置信息,打印纸大小方向等,也不需要程序员设置,因为它是由页面设置对话框获取的.
4、DocumentName 属性
指定文档名称,出现在打印机状态窗口中
1。 BeginPrint事件
在打印之前发出
2. PrintPage事件
每打印一页是发出,事件接受一个PrintPageEventArgs参数该参数封装了打印相关的信息
PrintPageEventArgs参数有很多重要的属性
1 Cancel 取消打印
2 Graphics 页面的绘图对象
3 HasMorePages 是否还有要打印的页面
打印的代码:
/// <summary> /// 打印代码 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void printDocument1_PrintPage(object sender, PrintPageEventArgs e) { //通过GDI+绘制打印文档 e.Graphics.DrawString("蝶恋花", new Font("宋体", 15), Brushes.Black, 350, 80); e.Graphics.DrawLine(new Pen(Color.Black, (float)3.00), 100, 185, 720, 185); e.Graphics.DrawString("伫倚危楼风细细,望极春愁,黯黯生天际。", new Font("宋体", 12), Brushes.Black, 110, 195); e.Graphics.DrawString("草色烟光残照里,无言谁会凭阑意。", new Font("宋体", 12), Brushes.Black, 110, 220); e.Graphics.DrawString("拟把疏狂图一醉,对酒当歌,强乐还无味。", new Font("宋体", 12), Brushes.Black, 110, 245); e.Graphics.DrawString("衣带渐宽终不悔。为伊消得人憔悴。", new Font("宋体", 12), Brushes.Black, 110, 270); e.Graphics.DrawLine(new Pen(Color.Black, (float)3.00), 100, 300, 720, 300); }
调用打印代码:
/// <summary> /// 点击打印预览 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void button1_Click(object sender, EventArgs e) { if(MessageBox.Show("是否要预览打印文档", "打印预览", MessageBoxButtons.YesNo) == DialogResult.Yes) { //开启操作系统的防锯齿功能 this.printPreviewDialog1.UseAntiAlias = true; //设置要预览的文档 this.printPreviewDialog1.Document = this.printDocument1; //打开预览窗口 printPreviewDialog1.ShowDialog(); } else { //调用Print方法直接打印文档 this.printDocument1.Print(); } }
安装Windows的虚拟打印机可以参考:
http://jingyan.baidu.com/article/95c9d20d97d04bec4e7561ba.html
http://jingyan.baidu.com/article/375c8e19bc694525f2a229fa.html