تعریف قالبهای جداول سفارشی و کار با منابع دادهای از نوع Anonymous در PdfReport
نویسنده: وحید نصیری
تاریخ: ۱۳۹۱/۰۷/۱۸ ۰:۲۲
آدرس: www.dntips.ir
| مطالب | ۳۶۹۴ |
| نویسندگان | ۲۷۶ |
| گروههای مطالب | ۱۰۲۴ |
| نقشههای راه | ۱۱۹ |
| دورهها | ۱۴ |
| اشتراکها | ۱۷۹۱۴ |
using System.Collections.Generic;
using System.Drawing;
using iTextSharp.text;
using PdfRpt.Core.Contracts;
namespace PdfReportSamples.HexDump
{
public class GrayTemplate : ITableTemplate
{
public HorizontalAlignment HeaderHorizontalAlignment
{
get { return HorizontalAlignment.Center; }
}
public BaseColor AlternatingRowBackgroundColor
{
get { return new BaseColor(Color.WhiteSmoke); }
}
public BaseColor CellBorderColor
{
get { return new BaseColor(Color.LightGray); }
}
public IList<BaseColor> HeaderBackgroundColor
{
get { return new List<BaseColor> { new BaseColor(ColorTranslator.FromHtml("#990000")), new BaseColor(ColorTranslator.FromHtml("#e80000")) }; }
}
public BaseColor RowBackgroundColor
{
get { return null; }
}
public IList<BaseColor> PreviousPageSummaryRowBackgroundColor
{
get { return new List<BaseColor> { new BaseColor(Color.LightSkyBlue) }; }
}
public IList<BaseColor> SummaryRowBackgroundColor
{
get { return new List<BaseColor> { new BaseColor(Color.LightSteelBlue) }; }
}
public IList<BaseColor> PageSummaryRowBackgroundColor
{
get { return new List<BaseColor> { new BaseColor(Color.Yellow) }; }
}
public BaseColor AlternatingRowFontColor
{
get { return new BaseColor(ColorTranslator.FromHtml("#333333")); }
}
public BaseColor HeaderFontColor
{
get { return new BaseColor(Color.White); }
}
public BaseColor RowFontColor
{
get { return new BaseColor(ColorTranslator.FromHtml("#333333")); }
}
public BaseColor PreviousPageSummaryRowFontColor
{
get { return new BaseColor(Color.Black); }
}
public BaseColor SummaryRowFontColor
{
get { return new BaseColor(Color.Black); }
}
public BaseColor PageSummaryRowFontColor
{
get { return new BaseColor(Color.Black); }
}
public bool ShowGridLines
{
get { return true; }
}
}
}
.MainTableTemplate(template =>
{
template.CustomTemplate(new GrayTemplate());
})
using System;
using System.Collections;
using System.Linq;
namespace PdfReportSamples.HexDump
{
public static class PrintHex
{
public static char ToSafeAscii(this int b)
{
if (b >= 32 && b <= 126)
{
return (char)b;
}
return '_';
}
public static IEnumerable HexDump(this byte[] data)
{
int bytesPerLine = 16;
return data
.Select((c, i) => new { Char = c, Chunk = i / bytesPerLine })
.GroupBy(c => c.Chunk)
.Select(g =>
new
{
Hex = g.Select(c => String.Format("{0:X2} ", c.Char)).Aggregate((s, i) => s + i),
Chars = g.Select(c => ToSafeAscii(c.Char).ToString()).Aggregate((s, i) => s + i)
})
.Select((s, i) =>
new
{
Offset = String.Format("{0:d6}", i * bytesPerLine),
Hex = s.Hex,
Chars = s.Chars
});
}
}
}
using System;
using System.Text;
using PdfRpt.Core.Contracts;
using PdfRpt.FluentInterface;
namespace PdfReportSamples.HexDump
{
public class HexDumpPdfReport
{
public IPdfReportData CreatePdfReport()
{
return new PdfReport().DocumentPreferences(doc =>
{
doc.RunDirection(PdfRunDirection.LeftToRight);
doc.Orientation(PageOrientation.Portrait);
doc.PageSize(PdfPageSize.A4);
doc.DocumentMetadata(new DocumentMetadata { Author = "Vahid", Application = "PdfRpt", Keywords = "Test", Subject = "Test Rpt", Title = "Test" });
})
.DefaultFonts(fonts =>
{
fonts.Path(Environment.GetEnvironmentVariable("SystemRoot") + "\\fonts\\COUR.ttf",
Environment.GetEnvironmentVariable("SystemRoot") + "\\fonts\\tahoma.TTF");
})
.PagesFooter(footer =>
{
footer.DefaultFooter(DateTime.Now.ToString("MM/dd/yyyy"));
})
.PagesHeader(header =>
{
header.DefaultHeader(defaultHeader =>
{
defaultHeader.ImagePath(AppPath.ApplicationPath + "\\Images\\01.png");
defaultHeader.Message("Hex Dump");
});
})
.MainTableTemplate(template =>
{
template.CustomTemplate(new GrayTemplate());
})
.MainTablePreferences(table =>
{
table.ColumnsWidthsType(TableColumnWidthType.Relative);
})
.MainTableDataSource(dataSource =>
{
var data = Encoding.UTF8.GetBytes("The quick brown fox jumps over the lazy dog.");
var list = data.HexDump();
dataSource.AnonymousTypeList(list);
})
.MainTableColumns(columns =>
{
columns.AddColumn(column =>
{
column.PropertyName("Offset");
column.CellsHorizontalAlignment(HorizontalAlignment.Center);
column.IsVisible(true);
column.Order(0);
column.Width(0.5f);
column.HeaderCell("Offset");
});
columns.AddColumn(column =>
{
column.PropertyName("Hex");
column.CellsHorizontalAlignment(HorizontalAlignment.Left);
column.IsVisible(true);
column.Order(1);
column.Width(2.5f);
column.HeaderCell("Hex");
});
columns.AddColumn(column =>
{
column.PropertyName("Chars");
column.CellsHorizontalAlignment(HorizontalAlignment.Left);
column.IsVisible(true);
column.Order(2);
column.Width(1f);
column.HeaderCell("Chars");
});
})
.MainTableEvents(events =>
{
events.DataSourceIsEmpty(message: "There is no data available to display.");
})
.Generate(data => data.AsPdfFile(AppPath.ApplicationPath + "\\Pdf\\HexDumpSampleRpt.pdf"));
}
}
}
.MainTableDataSource(dataSource =>
{
var data = Encoding.UTF8.GetBytes("The quick brown fox jumps over the lazy dog.");
var list = data.HexDump();
dataSource.AnonymousTypeList(list);
})
column.PropertyName("Offset");
//...
column.PropertyName("Hex");
//...
column.PropertyName("Chars");
.Select(x => new
{
OrderInfo = x.OrderInfoData
})
column.PropertyName("OrderInfo.Price");