控件中国网现已改版,您看到的是老版本网站的镜像,系统正在为您跳转到新网站首页,请稍候.......
中国最专业的商业控件资讯网产品咨询电话:023-67870900 023-67871946
产品咨询EMAIL:SALES@COMPONENTCN.COM

DevExpress XtraPrinting Library 的打印功能介绍

作者:佚名 出处:互联网 2010年05月17日 阅读:

DevExpress XtraPrinting Library 的打印功能介绍

控件中国网提供Developer Express公司的所有产品的下载,销售,技术支持服务,点击以下链接下载:

DXperience下载

购买Developer Express公司产品请联系控件中国网023- 67870900

设计报告不仅费时间,而且还乏味!但是,终端用户信赖打印的报告,同时大多数的应用也需要它们。因此,如何发挥你UI的功能并让你的用户把它呈递到纸上又会怎样呢?毋庸置疑,XtraPrinting Library肯定是你的最佳选择。XtraPrinting Library 是100%的C#数据呈递和可视化系统。用于特殊的Visual Studio .NET且将你的用户接口与打印页面相连接。一旦你开始使用XtraPrinting Library,你就能方便的打印高级可视控件中的内容,正如XtraGrid和XtraTreeList一样简单。可以使你在不需要传统的报告编辑器的情况下能为你的终端用户提供无限制的报告。

如何完美演绎XtraPrinting Library的打印功能呢?

首先要实现打印功能必须添加一个引用:DevExpress.XtraPrint。
实现打印需要用到的主要的类:
  1. public class PrintingSystem : Component,  ISupportInitialize,IPrintingSystem,IAccessible,IExporter,IPrintingSystemContext
  该类负责提供生成报表的一些方法,还提供了对页面进行设置和打印报表的一些函数,这个类的属性包含了访问其他管理报表的对象,如Document类,BrickGraphics类(在报表上进行画图的类),XtraPageSettings类(提供对打印页面进行设置的操作)
  2. public class PrintableComponentLink : Link
  该类的功能是对实现DevExpress.XtraPrinting.IPrintable接口的所有控件进行打印,它提供了一些基本的生成和打印报表的功能。在生成报表以后可以通过PrintingSystem将报表打印出来。
  通过以上这两个类就能完全实现各种控件打印了,只要一个控件实现了DevExpress.XtraPrinting.IPrintable这个接口就能够对该控件打印,如GridControl,CharControl等等,下面给出具体的实现方法:

public class PrintSettingController
{
PrintingSystem ps = null;
string formName = null;

        PrintableComponentLink link = null;

        string _PrintHeader = null;
/// <summary>
/// 打印时的标题
/// </summary>
public string PrintHeader
{
set
{
_PrintHeader = value;
}
}

        string _PrintFooter = null;
/// <summary>
/// 打印时页脚
/// </summary>
public string PrintFooter
{
set
{
_PrintFooter = value;
}
}

        bool _landScape;
/// <summary>
/// 页面横纵向
/// </summary>
public bool LandScape
{
set { _landScape = value; }
}

        System.Drawing.Printing.PaperKind _paperKind;
/// <summary>
/// 纸型
/// </summary>
public System.Drawing.Printing.PaperKind PaperKind
{
set { _paperKind = value; }
}

        /// <summary>
/// 打印控制器
/// </summary>
/// <param name="control">要打印的部件</param>
public PrintSettingController(IPrintable control)
{
if (control == null) return;
Control c = (Control)control;
formName = c.FindForm().GetType().FullName + "." + c.Name;
ps = new DevExpress.XtraPrinting.PrintingSystem();
link = new DevExpress.XtraPrinting.PrintableComponentLink(ps);
ps.Links.Add(link);
link.Component = control;
}

        /// <summary>
/// 打印预览
/// </summary>
public void Preview()
{
try
{
if (DevExpress.XtraPrinting.PrintHelper.IsPrintingAvailable)
{
Cursor.Current = Cursors.AppStarting;
if (_PrintHeader != null)
{
PageHeaderFooter phf = link.PageHeaderFooter as PageHeaderFooter;

                        //设置页眉
phf.Header.Content.Clear();
phf.Header.Content.AddRange(new string[] { "", _PrintHeader, "" });
phf.Header.Font = new System.Drawing.Font("宋体", 14, System.Drawing.FontStyle.Bold);
phf.Header.LineAlignment = BrickAlignment.Center;

                        //设置页脚
phf.Footer.Content.Clear();
phf.Footer.Content.AddRange(new string[] { "", "", _PrintFooter });
phf.Footer.Font = new System.Drawing.Font("宋体", 9, System.Drawing.FontStyle.Regular);
phf.Footer.LineAlignment = BrickAlignment.Center;

                    }
link.PaperKind = ps.PageSettings.PaperKind ;
link.Margins = ps.PageSettings.Margins;
link.Landscape = ps.PageSettings.Landscape;
link.CreateDocument();

//汉化
DevExpress.XtraPrinting.Localization.PreviewLocalizer.Active = new Dxperience.LocalizationCHS.DxperienceXtraPrintingLocalizationCHS();
ps.PreviewFormEx.Show();

                }
else
{
Cursor.Current = Cursors.Default;
MessageBox.Show("打印机不可用 ", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
}
finally
{
Cursor.Current = Cursors.Default;
}
}

        /// <summary>
/// 打印
/// </summary>
public void Print()
{
try
{
if (DevExpress.XtraPrinting.PrintHelper.IsPrintingAvailable)
{
if (_PrintHeader != null)
{
PageHeaderFooter phf = link.PageHeaderFooter as PageHeaderFooter;

                        //设置页眉
phf.Header.Content.Clear();
phf.Header.Content.AddRange(new string[] { "", _PrintHeader, "" });
phf.Header.Font = new System.Drawing.Font("宋体", 14, System.Drawing.FontStyle.Bold);
phf.Header.LineAlignment = BrickAlignment.Center;

                        //设置页脚
phf.Footer.Content.Clear();
phf.Footer.Content.AddRange(new string[] { "", "", _PrintFooter });
phf.Footer.Font = new System.Drawing.Font("宋体", 9, System.Drawing.FontStyle.Regular);
phf.Footer.LineAlignment = BrickAlignment.Center;

                    }
link.PaperKind = ps.PageSettings.PaperKind;
link.Margins = ps.PageSettings.Margins;
link.Landscape = ps.PageSettings.Landscape;
link.CreateDocument();
link.CreateDocument();
//汉化
DevExpress.XtraPrinting.Localization.PreviewLocalizer.Active = new Dxperience.LocalizationCHS.DxperienceXtraPrintingLocalizationCHS();
ps.Print();
}
else
{
Cursor.Current = Cursors.Default;
MessageBox.Show("打印机不可用 ", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
}
finally
{
}
}

        //获取页面设置信息
public void LoadPageSetting()
{

            System.Drawing.Printing.Margins margins = new System.Drawing.Printing.Margins(60, 60, 60, 60);
ps.PageSettings.Assign(margins, _paperKind, _landScape);

        }
}

  客户端如何使用:实例化PrintSettingController,进行参数设置,包括页眉页脚横纵向纸型,当然所有这些设置信息也可以在PrintSettingControll类里进行设置了,我这里是需求的需要,所以加在了外面,PrintSystem.PageSettings属性是XtraPageSettings类型,XtraPageSettings类封装了所有的页面设置信息,你可以在LoadPageSetting()函数里面进行修改,来实现自己想要的功能,例如可以把设置信息保存成XML文件
PrintSettingController psc = new PrintSettingController(this.gridControl1);
//页眉
psc.PrintHeader = this.Text;

//页脚
psc.PrintFooter = this.dateTimePicker1.Text.ToString();

//横纵向
psc.LandScape = this.rbtnHorizon.Checked;

//纸型
psc.PaperKind = System.Drawing.Printing.PaperKind.A4;
//加载页面设置信息
psc.LoadPageSetting();

psc.Preview();

  另外该类实现了对打印预览对话框的汉化功能,添加了一个引用DXChinese.dll,然后在程序中加入了以下代码即可实现汉化:
DevExpress.XtraPrinting.Localization.PreviewLocalizer.Active = new Dxperience.LocalizationCHS.DxperienceXtraPrintingLocalizationCHS();]
 

控件中国网提供Developer Express公司的所有产品的下载,销售,技术支持服务,点击以下链接下载:

DXperience下载

购买Developer Express公司产品请联系控件中国网023- 67870900

 

热推产品

  • ActiveReport... 强大的.NET报表设计、浏览、打印、转换控件,可以同时用于WindowsForms谀坔攀戀Forms平台下......
  • AnyChart AnyChart使你可以创建出绚丽的交互式的Flash和HTML5的图表和仪表控件。可以用于仪表盘的创......
首页 | 新闻中心 | 产品中心 | 技术文档 | 友情连接 | 关于磐岩 | 技术支持中心 | 联系我们 | 帮助中心 Copyright-2006 ComponentCN.com all rights reserved.重庆磐岩科技有限公司(控件中国网) 版权所有 电话:023 - 67870900 传真:023 - 67870270 产品咨询:sales@componentcn.com 渝ICP备12000264号 法律顾问:元炳律师事务所 重庆市江北区塔坪36号维丰创意绿苑A座28-5 邮编:400020
在线客服
在线客服系统
在线客服
在线客服系统