رایگان بودنش برای 30 روزه
نظرات اشتراکها
رایگان بودنش برای 30 روزه
using System; using System.Collections.Generic; using PdfReportSamples.Models; using PdfRpt.Core.Contracts; using PdfRpt.Core.Helper; using PdfRpt.FluentInterface; namespace PdfReportSamples.ChartImage { public class ChartImagePdfReport { public IPdfReportData CreatePdfReport() { var chart = new MSChartHelper { AxisXTitle = "User", AxisYTitle = "Balance", ChartTitle = "Users Balance", AxisTitleFont = new System.Drawing.Font("Tahoma", 12f), LabelStyleFont = new System.Drawing.Font("Tahoma", 10f), ChartTitleFont = new System.Drawing.Font("Arial", 16f, System.Drawing.FontStyle.Bold), LegendsFont = new System.Drawing.Font("Tahoma", 12f) }; return new PdfReport().DocumentPreferences(doc => { doc.RunDirection(PdfRunDirection.RightToLeft); 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(string.Format("{0}\\fonts\\irsans.ttf", AppPath.ApplicationPath), string.Format("{0}\\fonts\\verdana.ttf", Environment.GetEnvironmentVariable("SystemRoot"))); }) .PagesFooter(footer => { footer.DefaultFooter(printDate: DateTime.Now.ToString("MM/dd/yyyy")); }) .PagesHeader(header => { header.DefaultHeader(defaultHeader => { defaultHeader.ImagePath(AppPath.ApplicationPath + "\\Images\\01.png"); defaultHeader.Message("گزارش جدید ما"); }); }) .MainTableTemplate(template => { template.BasicTemplate(BasicTemplate.ClassicTemplate); }) .MainTablePreferences(table => { table.ColumnsWidthsType(TableColumnWidthType.Relative); }) .MainTableDataSource(dataSource => { var listOfRows = new List<User>(); for (var i = 0; i < 7; i++) { listOfRows.Add(new User { Id = i, LastName = "نام خانوادگی " + i, Name = "نام " + i, Balance = (i * 50) + 1000 }); } dataSource.StronglyTypedList(listOfRows); }) .MainTableEvents(events => { events.DataSourceIsEmpty(message: "There is no data available to display."); events.DocumentOpened(args => { chart.ChartInit(width: (int)args.PdfWriter.PageSize.Width - 100, height: 250); }); events.RowAdded(args => { if (args.RowType == RowType.DataTableRow) { var name = args.TableRowData.GetValueOf<User>(x => x.Name); if (name == null) return; var balance = args.TableRowData.GetValueOf<User>(x => x.Balance); if (balance == null) return; chart.AddXY(name, balance); } }); events.DocumentClosing(args => { chart.AddChartToPage(args.PdfDoc); chart.FreeResources(); }); }) .MainTableSummarySettings(summary => { summary.OverallSummarySettings("جمع"); summary.PreviousPageSummarySettings("نقل از صفحه قبل"); }) .MainTableColumns(columns => { columns.AddColumn(column => { column.PropertyName("rowNo"); column.IsRowNumber(true); column.CellsHorizontalAlignment(HorizontalAlignment.Center); column.IsVisible(true); column.Order(0); column.Width(1); column.HeaderCell("ردیف", captionRotation: 90); }); columns.AddColumn(column => { column.PropertyName<User>(x => x.Id); column.CellsHorizontalAlignment(HorizontalAlignment.Center); column.IsVisible(true); column.Order(1); column.Width(2); column.HeaderCell("شماره"); }); columns.AddColumn(column => { column.PropertyName<User>(x => x.Name); column.CellsHorizontalAlignment(HorizontalAlignment.Center); column.IsVisible(true); column.Order(2); column.Width(2); column.HeaderCell("نام"); }); columns.AddColumn(column => { column.PropertyName<User>(x => x.LastName); column.CellsHorizontalAlignment(HorizontalAlignment.Center); column.IsVisible(true); column.Order(3); column.Width(3); column.HeaderCell("نام خانوادگی"); }); columns.AddColumn(column => { column.PropertyName<User>(x => x.Balance); column.HeaderCell("موجودی"); column.ColumnItemsTemplate(template => { template.TextBlock(); template.DisplayFormatFormula(obj => obj == null ? string.Empty : string.Format("{0:n0}", obj)); }); column.Width(2); column.AggregateFunction(aggregateFunction => { aggregateFunction.NumericAggregateFunction(AggregateFunction.Sum); aggregateFunction.DisplayFormatFormula(obj => obj == null ? string.Empty : string.Format("{0:n0}", obj)); }); column.CellsHorizontalAlignment(HorizontalAlignment.Center); column.IsVisible(true); column.Order(4); }); }) .Generate(data => data.AsPdfFile(AppPath.ApplicationPath + "\\Pdf\\RptChartSample.pdf")); } } }
using System.Drawing; using System.IO; //It's part of the .NET 4.0+ now. using System.Windows.Forms.DataVisualization.Charting; using iTextSharp.text; using iTextSharp.text.pdf; using PdfRpt.Core.Helper; namespace PdfReportSamples.ChartImage { public class MSChartHelper { // MS Chart learning tutorials: // http://weblogs.asp.net/scottgu/archive/2010/02/07/built-in-charting-controls-vs-2010-and-net-4-series.aspx Chart _chart; public System.Drawing.Font AxisTitleFont { set; get; } public string AxisXTitle { set; get; } public string AxisYTitle { set; get; } public string ChartTitle { set; get; } public System.Drawing.Font ChartTitleFont { set; get; } public System.Drawing.Font LabelStyleFont { set; get; } public System.Drawing.Font LegendsFont { set; get; } public void AddChartToPage(Document pdfDoc, int scalePercent = 100, float spacingBefore = 20, float spacingAfter = 10, float widthPercentage = 80) { using (var chartimage = new MemoryStream()) { _chart.SaveImage(chartimage, ChartImageFormat.Bmp); //BMP gives the best compression result var iTextSharpImage = PdfImageHelper.GetITextSharpImageFromByteArray(chartimage.GetBuffer()); iTextSharpImage.ScalePercent(scalePercent); iTextSharpImage.Alignment = Element.ALIGN_CENTER; var table = new PdfPTable(1) { WidthPercentage = widthPercentage, SpacingBefore = spacingBefore, SpacingAfter = spacingAfter }; table.AddCell(iTextSharpImage); pdfDoc.Add(table); } } public void AddXY(object xValue, params object[] yValue) { _chart.Series[0].Points.AddXY(xValue, yValue); } public void ChartInit(int width, int height) { _chart = new Chart { Width = width, Height = height, AntiAliasing = AntiAliasingStyles.All, TextAntiAliasingQuality = TextAntiAliasingQuality.High, Palette = ChartColorPalette.BrightPastel, BackColor = ColorTranslator.FromHtml("#F3DFC1"), BackGradientStyle = GradientStyle.TopBottom }; setBorder(); setTitles(); setChartAreas(); setLegends(); setSeries(); } public void FreeResources() { if (_chart != null && !_chart.IsDisposed) _chart.Dispose(); } private void setBorder() { _chart.BorderSkin.SkinStyle = BorderSkinStyle.Emboss; _chart.BorderlineWidth = 2; _chart.BorderlineColor = Color.FromArgb(181, 64, 1); _chart.BorderlineDashStyle = ChartDashStyle.Solid; } private void setChartAreas() { _chart.ChartAreas.Add("ChartArea1"); _chart.ChartAreas[0].AxisX.Title = AxisXTitle; _chart.ChartAreas[0].AxisY.Title = AxisYTitle; _chart.ChartAreas[0].AxisX.TitleFont = AxisTitleFont; _chart.ChartAreas[0].AxisY.TitleFont = AxisTitleFont; _chart.ChartAreas[0].AxisX.LabelStyle.Font = LabelStyleFont; _chart.ChartAreas[0].AxisX.LabelStyle.Angle = -90; _chart.ChartAreas[0].BackColor = Color.White; _chart.ChartAreas[0].AxisX.LineColor = Color.FromArgb(64, 64, 64); _chart.ChartAreas[0].AxisX.MajorGrid.LineColor = Color.FromArgb(64, 64, 64); _chart.ChartAreas[0].AxisY.LineColor = Color.FromArgb(64, 64, 64); _chart.ChartAreas[0].AxisY.MajorGrid.LineColor = Color.FromArgb(64, 64, 64); } private void setLegends() { _chart.Legends.Add("Default"); _chart.Legends[0].LegendStyle = LegendStyle.Row; _chart.Legends[0].IsTextAutoFit = false; _chart.Legends[0].DockedToChartArea = "ChartArea1"; _chart.Legends[0].Docking = Docking.Bottom; _chart.Legends[0].IsDockedInsideChartArea = false; _chart.Legends[0].BackColor = Color.Transparent; _chart.Legends[0].Font = LegendsFont; } private void setSeries() { _chart.Series.Add(""); _chart.Series[0].ChartType = SeriesChartType.Column; _chart.Series[0].Palette = ChartColorPalette.EarthTones; _chart.Series[0].IsValueShownAsLabel = true; _chart.Series[0].IsVisibleInLegend = false; } private void setTitles() { _chart.Titles.Add(ChartTitle); _chart.Titles[0].Font = ChartTitleFont; _chart.Titles[0].TextStyle = TextStyle.Shadow; _chart.Titles[0].ShadowOffset = 3; _chart.Titles[0].ShadowColor = Color.FromArgb(32, 0, 0); _chart.Titles[0].Alignment = ContentAlignment.TopCenter; _chart.Titles[0].ForeColor = Color.FromArgb(26, 59, 105); } } }
events.DocumentOpened(args => { chart.ChartInit(width: (int)args.PdfWriter.PageSize.Width - 100, height: 250); });
events.RowAdded(args => { if (args.RowType == RowType.DataTableRow) { var name = args.TableRowData.GetValueOf<User>(x => x.Name); if (name == null) return; var balance = args.TableRowData.GetValueOf<User>(x => x.Balance); if (balance == null) return; chart.AddXY(name, balance); } });
events.DocumentClosing(args => { chart.AddChartToPage(args.PdfDoc); chart.FreeResources(); });
<cdk-virtual-scroll-viewport></cdk-virtual-scroll-viewport>
npm install -g @angular/cli
ng new angular7-virtualScrolling
npm install @angular/cdk@latest
title = 'Angular 7 – Virtual Scrolling feature'; scrollItems: number[] = []; constructor() { for (let index = 0; index < 10000; index++) { this.scrollItems.push(index); } }
<div> <h4> {{this.title}} </h4> <cdk-virtual-scroll-viewport itemSize="100"> <div *cdkVirtualFor="let n of scrollItems">Item {{n}}</div> </cdk-virtual-scroll-viewport> </div>