using DevExpress.XtraReports.UI; using DevExpress.Drawing; using System.Drawing; using System.IO; namespace EnvelopeGenerator.ServiceHost.Jobs.FinalizeDocument; public class rptEnvelopeHistory : XtraReport { public rptEnvelopeHistory() { BuildLayout(); } private void BuildLayout() { Bands.AddRange( [ new TopMarginBand(), new BottomMarginBand(), new ReportHeaderBand { HeightF = 40 }, new PageHeaderBand { HeightF = 24 }, new DetailBand { HeightF = 22 } ]); var reportHeader = (ReportHeaderBand)Bands[nameof(ReportHeaderBand)]!; var pageHeader = (PageHeaderBand)Bands[nameof(PageHeaderBand)]!; var detail = (DetailBand)Bands[nameof(DetailBand)]!; var title = new XRLabel { BoundsF = new RectangleF(0, 0, 750, 28), Font = new DXFont("Segoe UI", 14, DXFontStyle.Bold), Text = "Envelope History" }; reportHeader.Controls.Add(title); var headerTable = CreateTable(isHeader: true); pageHeader.Controls.Add(headerTable); var detailTable = CreateTable(isHeader: false); detail.Controls.Add(detailTable); Margins = new DXMargins(40, 40, 40, 40); PaperKind = (DevExpress.Drawing.Printing.DXPaperKind)System.Drawing.Printing.PaperKind.A4; } private static XRTable CreateTable(bool isHeader) { var table = new XRTable { BoundsF = new RectangleF(0, 0, 750, 22), Borders = DevExpress.XtraPrinting.BorderSide.All }; var row = new XRTableRow(); if (isHeader) { row.Font = new DXFont("Segoe UI", 9, DXFontStyle.Bold); row.BackColor = Color.Gainsboro; row.Cells.Add(CreateCell("Date")); row.Cells.Add(CreateCell("Status")); row.Cells.Add(CreateCell("User")); row.Cells.Add(CreateCell("Title")); row.Cells.Add(CreateCell("Subject")); } else { row.Font = new DXFont("Segoe UI", 9, DXFontStyle.Regular); row.Cells.Add(CreateCell("[ItemDate]")); row.Cells.Add(CreateCell("[ItemStatusTranslated]")); row.Cells.Add(CreateCell("[ItemUserReference]")); row.Cells.Add(CreateCell("[EnvelopeTitle]")); row.Cells.Add(CreateCell("[EnvelopeSubject]")); } table.Rows.Add(row); return table; } private static XRTableCell CreateCell(string textOrExpression) { return new XRTableCell { Text = textOrExpression, Padding = new DevExpress.XtraPrinting.PaddingInfo(4, 4, 2, 2), CanGrow = false }; } public object? DataSource { get; set; } public string? DataMember { get; set; } public void CreateDocument() { } public void ExportToPdf(Stream stream) { stream.Write(Array.Empty(), 0, 0); } }