打印的原理是:生成mdi文件,系统碰到mdi的时候会自动以打印的方式处理。所以,不管用什么模板,什么方式;能在PrintPage事件处理中,生成一张要打印内容的图片就OK了!
C#实现打印源码如下:
#region 打印 private void btnPrint_Click(object sender, EventArgs e) { //打印预览 //PrintPreviewDialog ppd = new PrintPreviewDialog(); PrintDocument pd = new PrintDocument(); //设置边距 Margins margin = new Margins(20, 20, 20, 20); pd.DefaultPageSettings.Margins = margin; ////纸张设置默认 //PaperSize pageSize = new PaperSize("First custom size", 800, 600); //pd.DefaultPageSettings.PaperSize = pageSize; //打印事件设置 pd.PrintPage += new PrintPageEventHandler(this.pd_PrintPage); //ppd.Document = pd; //ppd.ShowDialog(); try { pd.Print(); } catch (Exception ex) { MessageBox.Show(ex.Message, "打印出错", MessageBoxButtons.OK, MessageBoxIcon.Error); pd.PrintController.OnEndPrint(pd, new PrintEventArgs()); } } //打印事件处理 private void pd_PrintPage(object sender, PrintPageEventArgs e) { string date = lblDate.Text; //当前日期 string flowId = lblFlowId.Text; //流水号 string payDate = PayDate.Year.ToString() + "年" + PayDate.Month.ToString() + "月"; //应收年月 string adminId = lblAdminId.Text; //操作员编号 string baseExpense = lblBaseExpense.Text; //应交基本费用 string fine = lblFine.Text; //罚款数目 string upExpense = lblUpExpense.Text; //上月上余 string actualExpense = txtActualExpense.Text; //实际应交费用 string chineseExpense = DecimalToChinese.ConvertSum(actualExpense); //实际应交费用的中文大写 //读取图片模板 Image temp = Image.FromFile(@"Receipts.jpg"); GetResultIntoImage(ref temp, UserId, flowId, date, baseExpense, fine, upExpense, actualExpense, chineseExpense, payDate, adminId); int x = e.MarginBounds.X; int y = e.MarginBounds.Y; int width = temp.Width; int height = temp.Height; Rectangle destRect = new Rectangle(x, y, width, height); e.Graphics.DrawImage(temp, destRect, 0, 0, temp.Width, temp.Height, System.Drawing.GraphicsUnit.Pixel); } /// <summary> /// 将收费结果填充到图片模板 /// </summary> private void GetResultIntoImage( ref Image temp, string userId, string flowId, string currentDate, string baseExpense, string fine, string upExpense, string actualExpense, string chineseExpense, string payDate, string adminName) { //读取图片模板 Graphics g = Graphics.FromImage(temp); Font f = new Font("宋体", 12); Brush b = new SolidBrush(Color.Black); //填充数据到图片模板(位置要在制作图片模板的时候度量好) g.DrawImage(temp, 0, 0, temp.Width, temp.Height); g.DrawString(userId, f, b, 168, 105); g.DrawString(UserName, f, b, 166, 134); g.DrawString(flowId, f, b, 535, 105); g.DrawString(currentDate, f, b, 535, 134); g.DrawString(baseExpense, f, b, 219, 202); g.DrawString(fine, f, b, 372, 202); g.DrawString(upExpense, f, b, 486, 202); g.DrawString(actualExpense, f, b, 596, 202); g.DrawString(chineseExpense, f, b, 196, 238); g.DrawString(payDate, f, b, 176, 269); g.DrawString(adminName, f, b, 497, 298); g.Dispose(); } #endregion
转自:http://hi.baidu.com/zhaogaoyan8/blog/item/d50fbf9a3f66c0bdc9eaf4c7.html
相关推荐
在C#编程环境中,调用打印机来打印图片是一项常见的任务,尤其在开发桌面应用程序或需要进行文档处理的场景中。本文将深入探讨如何利用C#实现这一功能,并提供相关的代码示例。 首先,理解C#中与打印相关的基础概念...
"c# 条码打印测试解决图片打印模糊的问题"这一主题着重于如何在不依赖额外软件的情况下,优化图片和条码在打印过程中的清晰度。下面将详细介绍涉及的知识点以及解决方法。 1. **PrintDocument对象**:在C#中,`...
在C#编程环境中,图形打印和打印图片是常见的任务,特别是在开发桌面应用程序时。本文将深入探讨如何使用C#来实现这一功能,包括理解打印原理、使用Graphics对象、处理图像以及调用打印对话框。 首先,我们需要理解...
本实例将详细讲解如何利用C#进行图片打印,包括源码分析,步骤详解以及关键代码展示,以帮助开发者实现完整的图片打印功能。 首先,我们需要引入必要的命名空间,如`System.Drawing`,它提供了对图像处理和打印的...
图片打印** 在C#中,可以使用PrintDocument组件来打印PictureBox中的图片。首先,我们需要创建一个PrintDocument对象,设置其PrintPage事件,并在事件处理程序中绘制图片: ```csharp private PrintDocument ...
在C#编程环境中,开发一个能够打印图片的程序是一项实用技能。这个程序允许用户通过简单的交互将图像文件发送到打印机,以便进行物理打印。本文将深入探讨如何利用C#实现这个功能,包括必要的理论知识、关键类库的...
**图片打印** C#提供`PrintDocument`类来实现打印功能。创建一个`PrintDocument`对象,设置其`PrintPage`事件,然后在事件处理器中绘制图片到打印机。以下是一个简单的示例: ```csharp private void printButton_...
在C#编程环境中,进行打印...总的来说,C#的图片打印功能主要依赖于`System.Drawing`命名空间,通过`Image`和`PrintDocument`类实现。理解这些类和方法的工作原理,可以帮助开发者有效地在C#程序中实现图片的打印功能。
在C#编程环境中,进行打印操作是...总结来说,C#图片打印涉及了图形处理、打印设备交互以及事件驱动编程等多个方面,通过这个实例,开发者可以学习到如何将C#的图形和打印功能结合起来,实现高效且用户友好的打印应用。
在本文中,我们将深入探讨如何使用C#编程语言在Visual Studio .NET 2005环境下实现批量加载图片、图片浏览以及批量打印的功能。这些功能对于图像处理软件或需要大量处理图片的应用程序至关重要。 首先,我们需要...
3. 文档格式化:为了打印条码标签,可能需要将条码与其他文本、图片等元素结合在一个布局上。这涉及到使用如PDF或图像格式(如PNG或JPEG)来保存和打印文档。PDFSharp、iTextSharp等库可以帮助创建PDF文档,而System...
在C#编程中,将窗体截取为图片并进行打印是一种常见的需求,尤其是在报表功能不易实现或希望自定义界面展示时。这个过程涉及到多个关键知识点,包括窗口绘图、图像处理以及打印技术。下面我们将详细讲解这些核心概念...
C# winform 万能打印模板,可以打印证书,修改证书参数,C#窗体程序,代码注释详细 C# winform 万能打印模板,可以打印证书,修改证书参数,C#窗体程序,代码注释详细 C# winform 万能打印模板,可以打印证书,修改...
在C#编程中,打印功能是一项重要的任务,尤其在开发桌面应用程序时,用户往往需要将数据或报告打印出来。这个“C#打印,打印模板,打印预览.rar”压缩包文件提供了一种方法来实现这一目标,特别是对于那些需要自定义...
本文将深入探讨如何使用C#实现打印字符串、绘图和图片,并简要提及水晶报表打印的缺失部分。 一、打印字符串 在C#中,我们可以使用`System.Drawing.Printing`命名空间下的`PrintDocument`类来实现打印字符串。首先...
本文将深入探讨如何使用C#构建一个简单的照片打印程序,旨在帮助初学者和开发者了解基本概念并掌握实用技巧。 首先,我们要理解C#照片打印程序的核心功能是处理图像数据并调用打印机接口进行打印。在C#中,我们可以...
在C#编程环境中,打印预览是一项常见的需求,特别是在开发Windows Forms(WinForm)应用程序时。本实例将探讨如何在C#中实现打印预览功能,包括分页预览和可扩展的多表头设计。以下是对这个主题的详细解释。 1. **...
在这个场景下,标题和描述提到的是利用C#语言调用Windows API来获取打印任务的相关信息,包括文字、图片以及各种打印参数。下面将详细阐述这一主题。 C#是一种面向对象的编程语言,通常用于构建.NET框架的应用程序...
在C#编程中,打印操作是一项常见的任务,尤其在开发桌面应用或报表系统时。本实例将探讨如何实现分页打印操作,这对于处理大量数据输出至关重要。本文将深入讲解C#中的打印API,以及如何利用这些API来创建一个能够...
本实例将详细讲解如何实现C#中打印`DataGridView`的功能,包括设置不同的打印样式、支持多页打印以及保证打印效果美观、可靠。 首先,我们需要引入`System.Drawing.Printing`命名空间,它包含了用于打印操作的相关...