نمایش درصد پیشرفت، Watermark و گزارشات چند ستونی در PdfReport
نویسنده: وحید نصیری
تاریخ: ۱۳۹۱/۰۷/۱۶ ۰:۳۶
آدرس: www.dntips.ir
| مطالب | ۳۶۹۴ |
| نویسندگان | ۲۷۶ |
| گروههای مطالب | ۱۰۲۴ |
| نقشههای راه | ۱۱۹ |
| دورهها | ۱۴ |
| اشتراکها | ۱۷۹۱۴ |
namespace PdfReportSamples.Models
{
public class Task
{
public int Id { set; get; }
public string Name { set; get; }
public int PercentCompleted { set; get; }
public bool IsActive { set; get; }
}
}
using System;
using System.Collections.Generic;
using System.Drawing;
using iTextSharp.text;
using PdfReportSamples.Models;
using PdfRpt;
using PdfRpt.Core.Contracts;
using PdfRpt.Core.Helper;
using PdfRpt.FluentInterface;
namespace PdfReportSamples.ProgressReport
{
public class ProgressReportPdfReport
{
private IPdfFont getWatermarkFont()
{
var watermarkFont = new GenericFontProvider(
AppPath.ApplicationPath + "\\fonts\\irsans.ttf",
Environment.GetEnvironmentVariable("SystemRoot") + "\\fonts\\verdana.ttf");
watermarkFont.Color = BaseColor.LIGHT_GRAY;
watermarkFont.Size = 50;
return watermarkFont;
}
public IPdfReportData CreatePdfReport()
{
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" });
doc.DiagonalWatermark(new DiagonalWatermark
{
Text = "نمایش درصد پیشرفت",
RunDirection = PdfRunDirection.RightToLeft,
Font = getWatermarkFont()
});
})
.DefaultFonts(fonts =>
{
fonts.Path(AppPath.ApplicationPath + "\\fonts\\irsans.ttf",
Environment.GetEnvironmentVariable("SystemRoot") + "\\fonts\\verdana.ttf");
})
.PagesFooter(footer =>
{
footer.DefaultFooter(PersianDate.ToPersianDateTime(DateTime.Now, "/", true));
})
.PagesHeader(header =>
{
header.DefaultHeader(defaultHeader =>
{
defaultHeader.Message("گزارش جدید ما");
defaultHeader.ImagePath(AppPath.ApplicationPath + "\\Images\\01.png");
});
})
.MainTableTemplate(template =>
{
template.BasicTemplate(BasicTemplate.SilverTemplate);
})
.MainTablePreferences(table =>
{
table.ColumnsWidthsType(TableColumnWidthType.Relative);
table.MultipleColumnsPerPage(new MultipleColumnsPerPage
{
ColumnsGap = 20,
ColumnsPerPage = 2,
ColumnsWidth = 250,
IsRightToLeft = true,
TopMargin = 7
});
})
.MainTableDataSource(dataSource =>
{
var listOfRows = new List<Task>();
var rnd = new Random();
for (int i = 0; i < 400; i++)
{
listOfRows.Add(new Task
{
Id = rnd.Next(1000, 10000),
Name = "Task" + i,
PercentCompleted = rnd.Next(1, 100),
IsActive = rnd.Next(0, 2) == 1 ? true : false
});
}
dataSource.StronglyTypedList<Task>(listOfRows);
})
.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<Task>(x => x.Id);
column.CellsHorizontalAlignment(HorizontalAlignment.Center);
column.IsVisible(true);
column.Order(1);
column.Width(2);
column.HeaderCell("شماره فعالیت");
});
columns.AddColumn(column =>
{
column.PropertyName<Task>(x => x.Name);
column.CellsHorizontalAlignment(HorizontalAlignment.Center);
column.IsVisible(true);
column.Order(2);
column.Width(3);
column.HeaderCell("فعالیت");
});
columns.AddColumn(column =>
{
column.PropertyName<Task>(x => x.PercentCompleted);
column.CellsHorizontalAlignment(HorizontalAlignment.Center);
column.IsVisible(true);
column.Order(3);
column.Width(3);
column.HeaderCell("درصد پیشرفت");
column.ColumnItemsTemplate(template =>
{
template.ProgressBar(progressBarColor: Color.SkyBlue, showPercentText: true);
template.DisplayFormatFormula(obj =>
{
if (obj == null) return "% 0";
return "% " + obj.ToString();
});
});
});
columns.AddColumn(column =>
{
column.PropertyName<Task>(x => x.IsActive);
column.CellsHorizontalAlignment(HorizontalAlignment.Center);
column.IsVisible(true);
column.Order(4);
column.Width(2);
column.HeaderCell("در جریان");
column.ColumnItemsTemplate(template =>
{
template.Checkmark(checkmarkFillColor: Color.Green, crossSignFillColor: Color.DarkRed);
});
});
})
.MainTableEvents(events =>
{
events.DataSourceIsEmpty(message: "There is no data available to display.");
})
.Export(export =>
{
export.ToExcel();
})
.Generate(data => data.AsPdfFile(AppPath.ApplicationPath + "\\Pdf\\ProgressReportSample.pdf"));
}
}
}
doc.DiagonalWatermark(new DiagonalWatermark
{
Text = "نمایش درصد پیشرفت",
RunDirection = PdfRunDirection.RightToLeft,
Font = getWatermarkFont()
});
private IPdfFont getWatermarkFont()
{
var watermarkFont = new GenericFontProvider(
AppPath.ApplicationPath + "\\fonts\\irsans.ttf",
Environment.GetEnvironmentVariable("SystemRoot") + "\\fonts\\verdana.ttf");
watermarkFont.Color = BaseColor.LIGHT_GRAY;
watermarkFont.Size = 50;
return watermarkFont;
}
table.MultipleColumnsPerPage(new MultipleColumnsPerPage
{
ColumnsGap = 20,
ColumnsPerPage = 2,
ColumnsWidth = 250,
IsRightToLeft = true,
TopMargin = 7
});
column.ColumnItemsTemplate(template =>
{
template.ProgressBar(progressBarColor: Color.SkyBlue, showPercentText: true);
template.DisplayFormatFormula(obj =>
{
if (obj == null) return "% 0";
return "% " + obj.ToString();
});
});
column.ColumnItemsTemplate(template =>
{
template.Checkmark(checkmarkFillColor: Color.Green, crossSignFillColor: Color.DarkRed);
});