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()
  {
  }
 }

首先,要在Vue项目中集成DevExpress打印查看和打印设计器,需要先安装devexpress-vue包。可以通过以下命令进行安装: ``` npm install devexpress-vue ``` 接下来,在Vue项目中引入devexpress-vue包: ```javascript import Vue from 'vue'; import DevExpress from 'devexpress-vue'; Vue.use(DevExpress); ``` 现在,就可以在Vue组件中使用DevExpress打印查看和打印设计器了。 下面,是一个基于.NET Core 6的前后端的案例。 后端: 首先,需要创建一个.NET Core Web API项目,并在Startup.cs中添加以下代码以允许跨域请求: ```csharp public void ConfigureServices(IServiceCollection services) { services.AddCors(options => { options.AddDefaultPolicy(builder => { builder.WithOrigins("http://localhost:8080") .AllowAnyHeader() .AllowAnyMethod(); }); }); services.AddControllers(); } public void Configure(IApplicationBuilder app, IWebHostEnvironment env) { app.UseCors(); app.UseRouting(); app.UseAuthorization(); app.UseEndpoints(endpoints => { endpoints.MapControllers(); }); } ``` 然后,创建一个打印请求的控制器: ```csharp [ApiController] [Route("[controller]")] public class PrintController : ControllerBase { [HttpPost] public IActionResult Print([FromBody] PrintRequest request) { // 处理打印请求 return Ok(); } } ``` 前端: 在Vue项目中,可以通过以下代码创建一个简单的打印请求: ```javascript this.$http.post('http://localhost:5000/print', { reportName: 'Report1', parameters: { parameter1: 'value1', parameter2: 'value2' } }).then(response => { console.log(response); }); ``` 其中,reportName表示报表名称,parameters是一个对象,包含报表中需要的参数。 然后,在打印按钮的点击事件中,使用DevExpress打印查看和打印设计器: ```javascript import { Viewer, Designer } from 'devexpress-vue/reporting'; export default { components: { Viewer, Designer }, data() { return { reportName: 'Report1', parameters: { parameter1: 'value1', parameter2: 'value2' }, showDesigner: false }; }, methods: { print() { this.$http.post('http://localhost:5000/print', { reportName: this.reportName, parameters: this.parameters }).then(response => { const report = new DevExpress.Reporting.Report(); report.load(response.data, DevExpress.Reporting.JsonLoadingOptions); DevExpress.Reporting.Viewer.view(report, '#reportViewer', { height: '100%' }); }); }, showPrintDesigner() { this.showDesigner = true; }, hidePrintDesigner() { this.showDesigner = false; } }, template: ` <div> <button @click="print">打印</button> <button @click="showPrintDesigner">打印设计器</button> <viewer id="reportViewer" v-if="!showDesigner" /> <designer v-if="showDesigner" @close="hidePrintDesigner" /> </div> ` }; ``` 其中,print方法发送打印请求,并使用DevExpress打印查看器显示打印结果。showPrintDesigner和hidePrintDesigner方法用于显示和隐藏DevExpress打印设计器。在模板中,使用Viewer和Designer组件来显示DevExpress打印查看器和打印设计器。 这就是一个基于.NET Core 6的前后端集成DevExpress打印查看和打印设计器的案例。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值