`
lev
  • 浏览: 3374 次
  • 性别: Icon_minigender_1
  • 来自: 北京
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

C#实现打印源码

阅读更多
打印的原理是:生成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://www.cnblogs.com/chengulv/archive/2009/01/21/1379622.html
0
0
分享到:
评论

相关推荐

    C# 小票打印源码

    本文将深入探讨标题中的"C#小票打印源码",并围绕这个主题展开讨论。 首先,C#小票打印的核心是利用Windows API或第三方库来实现打印机的通信。Windows API提供了诸如`WritePrinter`等函数,可以直接与硬件设备交互...

    C#实现打印功能_c#打印_

    在C#编程环境中,实现打印功能是常见的需求,特别是...总结,C#实现打印功能主要通过System.Drawing命名空间的类,结合事件驱动模型来完成。理解这些类的工作原理和使用方式,能帮助开发者灵活地构建各种打印解决方案。

    C#东芝打印源码

    【C#东芝打印源码】是一套专用于与东芝打印机进行通信并实现打印功能的代码库。在C#编程环境下,开发者可以利用这些源码来构建应用程序,实现对东芝打印机的控制,发送打印指令,从而完成文档、图片等的打印任务。...

    C# 实现的3D打印

    以下是关于C#实现3D打印的一些关键知识点和详细解释: 1. **三维模型数据表示**:3D打印的第一步是获取或创建3D模型。C#可以用于处理STL、OBJ、3MF等3D模型文件格式。这些文件包含三角面片的顶点坐标,形成几何体...

    C#实现自动打印功能

    本主题将深入探讨如何使用C#语言和rdlc( Reporting Services Report Definition Language)技术来实现自动打印功能。 首先,rdlc是微软.NET Framework中用于创建报表的一种文件格式,它允许开发者在不离开开发环境...

    C#实现打印功能源代码

    在C#编程语言中,实现打印功能是一项常见的需求,它涉及到Windows应用程序与系统硬件设备——打印机的交互。本文将深入探讨如何使用C#来编写源代码以实现这一功能,主要涉及的技术点包括: 1. **System.Drawing命名...

    基于C#的快递单打印系统(源码+数据库).rar

    【基于C#的快递单打印系统】是一款使用C#编程语言开发的软件系统,主要功能是实现快递单的高效、便捷打印。这个系统的核心在于它的灵活性,经过适当的修改,可以适应各种不同格式和样式的快递单,从而实现“万能打印...

    C#实现打印PDF文件

    它可以读取、创建、修改PDF文件,同时也可以实现打印功能。通过创建一个PDFReader对象,然后调用Document对象的Print方法,可以将PDF发送到默认或指定的打印机。 3. **PDFSharp库**: PDFSharp是另一个流行的PDF...

    C#条码打印源码下载

    总的来说,这个C#条形码打印源码集合是一个宝贵的开发资源,对于需要在.NET环境中实现条形码功能的开发者来说,它提供了一个直观、可定制且经过测试的起点。无论是新手还是经验丰富的开发者,都可以从中受益,提升...

    C#打印实例-全部打印源码实例2019

    在C#中实现打印功能的基本步骤如下: 1. 创建一个PrintDocument对象,并设置其PrinterSettings属性,比如选择默认打印机,设定纸张大小等。 2. 处理PrintDocument的PrintPage事件。在这个事件处理函数中,你需要...

    C#打印操作实例--实现分页打印操作源码(十分经典)

    本文将深入讲解C#中的打印API,以及如何利用这些API来创建一个能够进行分页打印的源码实例。 C#提供了一个名为`System.Drawing.Printing`的命名空间,其中包含了许多用于控制打印机的类和方法。主要涉及的类有`...

    C# 打印条码标签Demo

    本项目“C# 打印条码标签Demo”是针对C#开发者的一个示例,它展示了如何利用C#语言来实现条码打印功能,这在物流、仓储、零售等业务场景中十分常见。下面将详细介绍这个Demo所涵盖的关键知识点。 1. 条码库与API:...

    C#打印实例-全部打印源码实例201903

    这个"C#打印实例-全部打印源码实例201903"压缩包文件很可能是提供了一系列C#实现打印功能的源代码示例,帮助开发者理解和掌握如何在C#环境中实现各种打印需求。下面,我们将深入探讨C#中的打印技术及其相关知识点。 ...

    C# 小票套打打印标尺打印源码

    【标题】"C# 小票套打打印标尺打印源码" 涉及的知识点主要集中在C#编程语言的使用,特别是针对小票打印的定制化开发。C#是一种面向对象的编程语言,广泛应用于Windows桌面应用、游戏开发以及服务器端应用程序等。在...

    c#打印控件

    本项目是一个关于C#打印控件的学习源码,可以帮助开发者深入理解如何在C#应用中实现打印操作。本文将详细讲解C#中的打印控件及其相关知识点。 首先,C#中的主要打印控件是PrintDocument,它继承自System.Drawing....

    C#打印实例-全部打印源码实例

    本资源提供了全面的C#打印源码实例,帮助开发者深入理解和掌握如何在C#环境中实现各种打印需求。下面我们将详细探讨C#中的打印技术。 1. **基础概念** - **PrintDocument对象**:这是C#中用于处理打印任务的主要...

    C#标签打印程序源码

    最后,实现打印功能需要调用System.Drawing.Printing命名空间的PrinterSettings和PrintDocument类。通过设置页边距、纸张大小等参数,我们可以在用户点击“打印”按钮时启动打印过程。 总的来说,"C#标签打印程序...

    C#实现打印设置以及打印预览效果实例源码

    本文将深入探讨如何使用C#实现打印设置和打印预览效果,通过实例源码帮助开发者理解并应用这些概念。 1. **基础概念** - **GDI+**:在C#中,我们通常使用Windows图形设备接口(GDI+)来处理打印任务,它提供了丰富...

    C#打印实例-全部打印源码实例(0515).rar

    "C#打印实例-全部打印源码实例(0515).rar"这个压缩包文件提供了关于C#中打印功能的源代码示例,可以帮助开发者深入理解并实践C#的打印机制。 C#中的打印主要依赖于.NET Framework提供的System.Drawing.Printing命名...

    C#打印操作实例--图片打印源码

    此外,如果要实现打印预览,可以使用`PrintPreviewDialog`类。 总之,C#的打印操作通过`System.Drawing.Printing`命名空间提供了强大的功能,使得开发者能够方便地实现图片和其他内容的打印。通过理解和实践这个...

Global site tag (gtag.js) - Google Analytics