DevExpress.net打印相关

using System;
using System.Drawing;

namespace DevPrint
{
 /// <summary>
 /// 自定义DevPrint控件,简单实用
 /// </summary>
 public class DevPrint
 {
  private string pageHeaderName="";
  private string pageFooterName="";
  private bool isPrintPage=true;
  private bool isPrintDate=true;
  private int headerLocation=1;
  private int footerLocation=1;
  private int pageLocation=3;
  private int dateLocation=5;
  private bool enableEditPage = true;
  private System.Drawing.Font pageHeaderFont = null;
  private System.Drawing.Font pageFooterFont = null;
  private System.Drawing.Printing.Margins devMargins = null;
  private System.Drawing.Printing.PaperKind devPaperKind = System.Drawing.Printing.PaperKind.A4;//可以自定义修改纸张
  private DevExpress.XtraPrinting.PageHeaderArea PHA = new DevExpress.XtraPrinting.PageHeaderArea();
  private DevExpress.XtraPrinting.PageFooterArea PFA = new DevExpress.XtraPrinting.PageFooterArea();

  public string PageHeaderName
  {
   get
   {
    return pageHeaderName;
   }
   set
   {
    pageHeaderName=value;
   }
  }
  
  public string PageFooterName
  {
   get
   {
    return pageFooterName;
   }
   set
   {
    pageFooterName = value;
   }
  }

  public bool IsPrintPage
  {
   get
   {
    return isPrintPage;
   }
   set
   {
    isPrintPage = value;
   }
  }

  public bool IsPrintDate
  {
   get
   {
    return isPrintDate;
   }
   set
   {
    isPrintDate = value;
   }
  }

  public int HeaderLocation
  {
   get
   {
    return headerLocation;
   }
   set
   {
    headerLocation=value;
   }
  }

  public int FooterLocation
  {
   get
   {
    return footerLocation;
   }
   set
   {
    footerLocation=value;
   }
  }

  public int PageLocation
  {
   get
   {
    return pageLocation;
   }
   set
   {
    pageLocation=value;
   }
  }

  public int DateLocation
  {
   get
   {
    return dateLocation;
   }
   set
   {
    dateLocation=value;
   }
  }

  public bool EnableEditPage
  {
   get
   {
    return enableEditPage;
   }
   set
   {
    enableEditPage = value;
   }
  }

  public System.Drawing.Font PageHeaderFont
  {
   get
   {
    return pageHeaderFont;
   }
   set
   {
    pageHeaderFont = value;
   }
  }

  public System.Drawing.Font PageFooterFont
  {
   get
   {
    return pageFooterFont;
   }
   set
   {
    pageFooterFont = value;
   }
  }

  public System.Drawing.Printing.Margins DevMargins
  {
   get
   {
    return devMargins;
   }
   set
   {
    devMargins = value;
   }
  }

  public System.Drawing.Printing.PaperKind DevPaperKind
  {
   get
   {
    return devPaperKind;
   }
   set
   {
    devPaperKind = value;
   }
  }

  private void PageHeaderFooterSettings()
  {
   PHA.Content.Clear();
   PFA.Content.Clear();
   string[] stringsPHA = new string[] {"","",""};
   string[] stringsPFA = new string[] {"","",""};
   switch(headerLocation)
   {
    case 0:stringsPHA[0]=pageHeaderName;
     break;
    case 1:stringsPHA[1]=pageHeaderName;
     break;
    case 2:stringsPHA[2]=pageHeaderName;
     break;
    default:stringsPHA[1]=pageHeaderName;
     break;
   };
   switch(footerLocation)
   {
    case 0:stringsPFA[0]=pageFooterName;
     break;
    case 1:stringsPFA[1]=pageFooterName;
     break;
    case 2:stringsPFA[2]=pageFooterName;
     break;
    default:stringsPFA[1]=pageFooterName;
     break;
   };
   if (isPrintPage)
   {
    switch(pageLocation)
    {
     case 0:stringsPHA[0]=stringsPHA[0]+"[Page # of Pages #]";
      break;
     case 1:stringsPHA[1]=stringsPHA[1]+"[Page # of Pages #]";
      break;
     case 2:stringsPHA[2]=stringsPHA[2]+"[Page # of Pages #]";
      break;
     case 3:stringsPFA[2]=stringsPFA[2]+"[Page # of Pages #]";
      break;
     case 4:stringsPFA[1]=stringsPFA[1]+"[Page # of Pages #]";
      break;
     case 5:stringsPFA[0]=stringsPFA[0]+"[Page # of Pages #]";
      break;
     default:stringsPFA[2]=stringsPFA[2]+"[Page # of Pages #]";
      break;
    };
   }
   if (isPrintDate)
   {
    switch(dateLocation)
    {
     case 0:stringsPHA[0]=stringsPHA[0]+"[Date Printed]";
      break;
     case 1:stringsPHA[1]=stringsPHA[1]+"[Date Printed]";
      break;
     case 2:stringsPHA[2]=stringsPHA[0]+"[Date Printed]";
      break;
     case 3:stringsPFA[2]=stringsPFA[2]+"[Date Printed]";
      break;
     case 4:stringsPFA[1]=stringsPFA[1]+"[Date Printed]";
      break;
     case 5:stringsPFA[0]=stringsPFA[0]+"[Date Printed]";
      break;
     default:stringsPFA[0]=stringsPFA[0]+"[Date Printed]";
      break;
    };
   }
   PHA.Content.AddRange(stringsPHA);
   PFA.Content.AddRange(stringsPFA);
   if (pageHeaderFont != null)
   {
    try
    {
     PHA.Font = pageHeaderFont;
    }
    catch
    {
     PHA.Font = new Font(new System.Drawing.FontFamily("楷体_GB2312"),20,System.Drawing.FontStyle.Bold,System.Drawing.GraphicsUnit.Point);
    }
   }
   else
   {
    PHA.Font = new Font(new System.Drawing.FontFamily("楷体_GB2312"),20,System.Drawing.FontStyle.Bold,System.Drawing.GraphicsUnit.Point);
   }
   if (pageFooterFont != null)
   {
    try
    {
     PFA.Font = pageFooterFont;
    }
    catch
    {
     PFA.Font = new Font(new System.Drawing.FontFamily("楷体_GB2312"),9,System.Drawing.FontStyle.Bold,System.Drawing.GraphicsUnit.Point);
    }
   }
  }
  public void ShowDevPreview(DevExpress.XtraPrinting.IPrintable printComponent)
  {
   PageHeaderFooterSettings();
   DevExpress.XtraPrinting.PrintingSystem ps = new DevExpress.XtraPrinting.PrintingSystem();
   DevExpress.XtraPrinting.PrintableComponentLink pc =new   DevExpress.XtraPrinting.PrintableComponentLink();
   pc.Component = printComponent;
   pc.Landscape = true;
   if (devMargins != null)
                pc.Margins = devMargins;
   if (devPaperKind != System.Drawing.Printing.PaperKind.A4)
       pc.PaperKind = devPaperKind;
   pc.PageHeaderFooter =  new DevExpress.XtraPrinting.PageHeaderFooter(PHA,PFA);
   pc.CreateDocument(ps);
   pc.EnablePageDialog = enableEditPage;
   pc.ShowPreview();
  }
  public DevPrint()
  {
  }
 }

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
DevExpress打印相关代码 using System; using System.Windows.Forms; using DevExpress.XtraPrinting; using System.Xml.Serialization; namespace MyDevExpressDemo { /// /// PrintSettingController 的摘要说明。 /// public class PrintSettingController { PrintingSystem ps = null; string formName=null; DevExpress.XtraPrinting.PrintableComponentLink link=null; /// /// /// /// 要打印的部件 /// 此部件对应的布局信息 public PrintSettingController(IPrintable control,string FormName) { formName=FormName; ps=new DevExpress.XtraPrinting.PrintingSystem(); link=new DevExpress.XtraPrinting.PrintableComponentLink(ps); ps.Links.Add(link); link.Component=control; ps.PageSettingsChanged-=new EventHandler(ps_PageSettingsChanged); LoadPageSetting(); ps.PageSettingsChanged+=new EventHandler(ps_PageSettingsChanged); ps.AfterMarginsChange+=new MarginsChangeEventHandler(ps_AfterMarginsChange); } 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; } link.PaperKind=ps.PageSettings.PaperKind; link.Margins=ps.PageSettings.Margins; link.Landscape=ps.PageSettings.Landscape; link.CreateDocument(); ps.PreviewForm.Show(); } else { Cursor.Current=Cursors.Default; MessageBox.Show("打印机不可用", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information); } } finally { Cursor.Current=Cursors.Default; } } /// /// 打印控制器 /// /// 要打印的部件 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; ps.PageSettingsChanged-=new EventHandler(ps_PageSettingsChanged); LoadPageSetting(); ps.PageSettingsChanged+=new EventHandler(ps_PageSettingsChanged); ps.AfterMarginsChange+=new MarginsChangeEventHandler(ps_AfterMarginsChange); } public void ExportToHtml() { try { using(SaveFileDialog fd=new SaveFileDialog()) { fd.Title="导出HTML文件"; fd.RestoreDirectory=true; fd.Filter="HTML文件|*.htm"; fd.FilterIndex=1; if(fd.ShowDialog()==DialogResult.OK) { // if(obj is DevExpress.XtraGrid.GridControl) // { // ((DevExpress.XtraGrid.GridControl)obj).ExportToHtml(fd.FileName); // MessageBox.Show("文件导出成功","导出",MessageBoxButtons.OK,MessageBoxIcon.Information); // } // else if(obj is DevExpress.XtraTreeList.TreeList) // { link.CreateDocument(); ps.ExportToHtml(fd.FileName); MessageBox.Show("文件导出成功","导出",MessageBoxButtons.OK,MessageBoxIcon.Information); // } } } } finally { } } /// /// 网格分组时要导出,请使用这个, /// public void GridGroupToExcel() { DevExpress.XtraGrid.GridControl grid=this.link.Component as DevExpress.XtraGrid.GridControl; if(grid!=null) { using(SaveFileDialog fd=new SaveFileDialog()) { fd.Title="导出Excel文件"; fd.RestoreDirectory=true; fd.Filter="Excel文件|*.xls"; fd.FilterIndex=1; if(fd.ShowDialog()==DialogResult.OK) { grid.ExportToExcel(fd.FileName); MessageBox.Show("文件导出成功","导出",MessageBoxButtons.OK,MessageBoxIcon.Information); } } } } public void ExportToExcel() { try { using(SaveFileDialog fd=new SaveFileDialog()) { fd.Title="导出Excel文件"; fd.RestoreDirectory=true; fd.Filter="Excel文件|*.xls"; fd.FilterIndex=1; if(fd.ShowDialog()==DialogResult.OK) { // if(obj is DevExpress.XtraGrid.GridControl) // { // ((DevExpress.XtraGrid.GridControl)obj).ExportToExcel(fd.FileName); // MessageBox.Show("文件导出成功","导出",MessageBoxButtons.OK,MessageBoxIcon.Information); // } // else if(obj is DevExpress.XtraTreeList.TreeList) // { link.CreateDocument(); ps.ExportToXls(fd.FileName); MessageBox.Show("文件导出成功","导出",MessageBoxButtons.OK,MessageBoxIcon.Information); // } } } } finally { } } string _PrintHeader=null; /// /// 打印时的标题 /// public string PrintHeader { set { _PrintHeader=value; } } /// /// 进行打印 /// 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; } link.PaperKind=ps.PageSettings.PaperKind; link.Margins=ps.PageSettings.Margins; link.Landscape=ps.PageSettings.Landscape; link.CreateDocument(); link.CreateDocument(); ps.Print(); } else { Cursor.Current=Cursors.Default; MessageBox.Show("打印机不可用", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information); } } finally { } } private void ps_AfterMarginsChange(object sender, MarginsChangeEventArgs e) { SavePageSetting(); } private void ps_PageSettingsChanged(object sender, EventArgs e) { SavePageSetting(); } //获取页面设置信息 void LoadPageSetting() { try { string path=System.Windows.Forms.Application.StartupPath+"\\PrintLayout"; if(!System.IO.Directory.Exists(path)) { return; } path+="\\"+formName+".xml"; if(!System.IO.File.Exists(path)) { return; } XmlSerializer ser=new XmlSerializer(typeof(UserPageSetting)); UserPageSetting setting=(UserPageSetting)ser.Deserialize(new System.IO.FileStream(path,System.IO.FileMode.Open,System.IO.FileAccess.Read,System.IO.FileShare.ReadWrite)); System.Drawing.Printing.Margins m=new System.Drawing.Printing.Margins(setting.Left,setting.Right,setting.Top,setting.Bottom); ps.PageSettings.Assign(m,(System.Drawing.Printing.PaperKind)setting.PaperKind,setting.Landscape); } catch{} } /// /// 保存当前网格的布局 /// void SavePageSetting() { try { string path=System.Windows.Forms.Application.StartupPath+"\\PrintLayout"; if(!System.IO.Directory.Exists(path)) { System.IO.Directory.CreateDirectory(path); } path+="\\"+formName+".xml"; DevExpress.XtraPrinting.XtraPageSettings setting= ps.PageSettings; UserPageSetting s=new UserPageSetting(); s.Landscape=setting.Landscape; s.Left=setting.Margins.Left; s.Right=setting.Margins.Right; s.Top=setting.Margins.Top; s.Bottom=setting.Margins.Bottom; s.PaperKind=(int)setting.PaperKind; XmlSerializer ser=new XmlSerializer(s.GetType()); ser.Serialize(new System.IO.FileStream(path,System.IO.FileMode.Create,System.IO.FileAccess.Write,System.IO.FileShare.ReadWrite),s); } catch{} } } /// /// 最终用户对某个打印页的设置 /// [Serializable()] public class UserPageSetting { public UserPageSetting() { } public bool Landscape; public int PaperKind; public int Top; public int Bottom; public int Left; public int Right; } }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值