zoukankan      html  css  js  c++  java
  • DevExpress打印功能介绍 z

    一、打印功能说明:

    打印功能,我们有多种实现方式,可以根据需要自行选择,我简单的总结下两种方法。

    (1)、使用微软.net框架自带的PrintDocument,这种方式是直接借助Graphics,自行调整位置和行间距等,一行行一页页绘画打印页面,虽然可控制性强,但是操作比较麻烦,而且细节和页面美化上,实现更是繁琐复杂。

    (2)、使用DevExpress框架,这里面也有很多种打印方法,这段时间我主要使用的是GridControll+PrintingSystem方法来实现打印,总结了以下,希望能对其他人有些帮助。

     

    二、打印功能详细说明:
    (1)、DevExpress中有很多控件已经自身实现了打 印接口( IPrintable, IBasePrintable等),即:此组件为了方便,提前对很多控件实现了打印功能。例如:GridControl,这个控件是我们用到的最多的数据 表格控件,常用来进行数据绑定和显示,操作和显示性都很好,对打印功能来说,基本能满足一般要求,但是需要对打印的文档进行详细细节的操作,可能无法满 足,所以加上PrintingSystem,打印控制便会更灵活。

    (2)、详细代码实现:
       public void Printing()
            {
               
                //相当于打印操作的控制器,起控制作用
                PrintingSystem print = new PrintingSystem();
                //相当于打印操作的实践者,真正完成打印功能操作
                DevExpress.XtraPrinting.PrintableComponentLink link = null;
                link = new DevExpress.XtraPrinting.PrintableComponentLink(print);
                //借助GridControl控件提供打印格式和内容(根据需要提供)
                link.Component = gridControlPrint;
                //设置页眉和页脚
                PageHeaderFooter phf = link.PageHeaderFooter as PageHeaderFooter;
                //设置页脚位置
                phf.Footer.LineAlignment = BrickAlignment.Center;
                phf.Header.Content.Clear();
                //设置页眉内容
                string headText = "页眉内容信息";
                phf.Header.Content.Add(headText);
                //设置页眉字体
                phf.Header.Font = new System.Drawing.Font("宋体", 12, System.Drawing.FontStyle.Regular);
                //设置页眉内容位置
                phf.Header.LineAlignment = BrickAlignment.Far;
                print.Links.Add(link);
                //设置内容页页脚信息(一般为页码信息)
                link.CreateMarginalFooterArea += new CreateAreaEventHandler(link_CreateMarginalFooterArea);
                //设置内容页页眉信息(一般为页标题信息)
                link.CreateMarginalHeaderArea += new CreateAreaEventHandler(link_CreateMarginalHeaderArea);
                //创建打印文档,此步完成文档的绘画生成
                link.CreateDocument(print);
                //设置文档的名称,即:输出的打印文件的名称。
                print.Document.Name = _docName;
                //设置是否显示打印提示框,即:打印了几页,当前是第几页等···
                print.ShowPrintStatusDialog = false;
                //开始调用打印驱动设备,进行打印!
                print.Print();
            }

     

         void link_CreateMarginalHeaderArea(object sender, CreateAreaEventArgs e)
            {
              
                //页信息块,可以设置页相关信息,一般设置:打印的页码信息
                //PageInfoBrick vPageInfoBrick1 =e.Graph.DrawPageInfo(PageInfo.NumberOfTotal, "第{0}页,共{1}页", Color.Black,
                //   new RectangleF(0, 0, 100, 21), BorderSide.None);
                //vPageInfoBrick1.LineAlignment = BrickAlignment.Center;
                //vPageInfoBrick1.Alignment = BrickAlignment.Center;
                //vPageInfoBrick1.AutoWidth = true;
                //vPageInfoBrick1.Font = new System.Drawing.Font("宋体", 16, FontStyle.Bold);
               
                //纯文本信息块,设置一些文字性说明信息,一般设置:简单的说明信息
                TextBrick text = e.Graph.DrawString("纯文字信息块", Color.Black, new RectangleF(10, 10, 100, 40), BorderSide.None);

              
            }

            void link_CreateMarginalFooterArea(object sender, CreateAreaEventArgs e)
            {
                PageInfoBrick vPageInfoBrick1 = e.Graph.DrawPageInfo(PageInfo.NumberOfTotal, "第{0}页,共{1}页", Color.Black,
                   new RectangleF(0, 0, 100, 21), BorderSide.None);
                vPageInfoBrick1.LineAlignment = BrickAlignment.Center;
                vPageInfoBrick1.Alignment = BrickAlignment.Center;
                vPageInfoBrick1.AutoWidth = true;
                vPageInfoBrick1.Font = new System.Drawing.Font("宋体", 11f, FontStyle.Bold);
               
            }

    说明:1、完成数据填装,为gridControlPrint填装数据表格和数据。

            2、创建PrintingSystem打印控制器和PrintableComponentLink打印功能块,为PrintableComponentLink指定打印关联容器gridControlPrint

            3、在PrintableComponentLink添加文档页眉和页脚处理事件,进行相应的自定义的动态调整。

            4、最后执行创建文档和打印操作。

  • 相关阅读:
    django页面分类和继承
    django前端从数据库获取请求参数
    pycharm配置django工程
    django 应用各个py文件代码
    CF. 1428G2. Lucky Numbers(背包DP 二进制优化 贪心)
    HDU. 6566. The Hanged Man(树形背包DP DFS序 重链剖分)
    小米邀请赛 决赛. B. Rikka with Maximum Segment Sum(分治 决策单调性)
    区间树 学习笔记
    CF GYM. 102861M. Machine Gun(主席树)
    2016-2017 ACM-ICPC East Central North America Regional Contest (ECNA 2016) (B, D, G, H)
  • 原文地址:https://www.cnblogs.com/zeroone/p/4311112.html
Copyright © 2011-2022 走看看