سلام وقت بخیر.
من میخوام اطلاعاتم کاملا سفارشی شده با استفاده از تگهای html چاپ بشن.چون که اطلاعاتم مربوط به یه دانشجو هست و حالتی داره که باید rowspan و colspan بهش بدم و .. عکس هم داخلش هست.
ایا امکانش هست؟؟
[0] = {"Object reference not set to an instance of an object."} [1] = {"The document has no pages."}
PdfReport pdfrpt = new PdfReport(); pdfrpt.DocumentPreferences(doc => { doc.RunDirection(PdfRunDirection.RightToLeft); doc.Orientation(PageOrientation.Portrait); doc.PageSize(PdfPageSize.A4); doc.DocumentMetadata(new DocumentMetadata { Author = "Hovze", Application = "PdfRpt", Keywords = "Report", Subject = "Test Rpt", Title = "Report" }); doc.Compression(new CompressionSettings { EnableCompression = true, EnableFullCompression = true }); doc.PrintingPreferences(new PrintingPreferences { ShowPrintDialogAutomatically = true }); }) .DefaultFonts(fonts => { fonts.Path(fontPath + "\\BNAZANIN.ttf", fontPath + "\\BNAZNNBD.ttf"); fonts.Size(13); }) .PagesFooter(footer => { footer.DefaultFooter(PersianDate.ToPersianDateTime(DateTime.Now, "/", false, false)); }) .PagesHeader(header => { header.HtmlHeader(rptheader => { rptheader.PageHeaderProperties(new HeaderBasicProperties { RunDirection = PdfRunDirection.RightToLeft, ShowBorder = true }); rptheader.AddPageHeader(pageHeader => { var message = "باسمه تعالی " + "</br>" + "حوزه علمیه امیر المومنین (ع) - معاونت آموزش - کارنامه تحصیلی طلبه"; var image = string.Format("<img src='{0}' />", imgPath); return string.Format(@"<table style='width: 100%;font-size:9pt;font-family:BNAZANIN;'> <tr> <td align='center'>{0}</td> </tr> <tr> <td align='center'><b>{1}</b></td> </tr> <tr> <td align='center'>{2}</td> </tr> </table>", image, message, " تاریخ " + PersianDate.ToPersianDateTime(DateTime.Now.Date, "/", false)); }); }); }) .MainTableTemplate(template => { template.BasicTemplate(BasicTemplate.SilverTemplate); }) .MainTablePreferences(table => { table.ColumnsWidthsType(TableColumnWidthType.Relative); table.NumberOfDataRowsPerPage(0); table.GroupsPreferences(new GroupsPreferences { GroupType = GroupType.HideGroupingColumns, RepeatHeaderRowPerGroup = true, ShowOneGroupPerPage = true, SpacingBeforeAllGroupsSummary = 10f, }); }) .MainTableDataSource(dataSource => { dataSource.DataTable(dt); }) .MainTableSummarySettings(summarySettings => { summarySettings.PreviousPageSummarySettings("نقل از صفحه قبل"); }) .MainTableColumns(columns => { columns.AddColumn(column => { column.PropertyName("سال"); column.CellsHorizontalAlignment(PdfRpt.Core.Contracts.HorizontalAlignment.Center); column.IsVisible(true); column.Order(0); column.Width(2); column.HeaderCell("سال تحصیلی"); }); columns.AddColumn(column => { column.PropertyName("نیمسال"); column.CellsHorizontalAlignment(PdfRpt.Core.Contracts.HorizontalAlignment.Left); column.IsVisible(true); column.Order(1); column.Width(1); column.HeaderCell("نیمسال"); }); columns.AddColumn(column => { column.PropertyName("پایه"); column.CellsHorizontalAlignment(PdfRpt.Core.Contracts.HorizontalAlignment.Left); column.IsVisible(true); column.Order(2); column.Width(1); column.HeaderCell("پایه"); }); columns.AddColumn(column => { column.PropertyName("درس"); column.CellsHorizontalAlignment(PdfRpt.Core.Contracts.HorizontalAlignment.Left); column.IsVisible(true); column.Order(3); column.Width(1); column.HeaderCell("درس"); }); for (int i = 6; i < countScore + 6; i++) { columns.AddColumn(column => { column.PropertyName(dt.Columns[i].ToString()); column.CellsHorizontalAlignment(PdfRpt.Core.Contracts.HorizontalAlignment.Left); column.IsVisible(true); column.Order(i - 2); column.Width(1); column.HeaderCell(dtTitle.Rows[0][i - 5].ToString()); }); } columns.AddColumn(column => { column.PropertyName("FinalScore1"); column.CellsHorizontalAlignment(PdfRpt.Core.Contracts.HorizontalAlignment.Left); column.IsVisible(true); column.Order(countScore + 4); column.Width(1); column.HeaderCell("نمره نهایی"); }); columns.AddColumn(column => { column.PropertyName("t_term1"); column.CellsHorizontalAlignment(PdfRpt.Core.Contracts.HorizontalAlignment.Left); column.IsVisible(true); column.Order(countScore+5); column.Width(1); column.HeaderCell("نمره تجدیدی"); }); columns.AddColumn(column => { column.PropertyName("t_term11"); column.CellsHorizontalAlignment(PdfRpt.Core.Contracts.HorizontalAlignment.Left); column.IsVisible(true); column.Order(countScore + 6); column.Width(1); column.HeaderCell("نمره استادیاری"); }); columns.AddColumn(column => { column.PropertyName("tabestan1"); column.CellsHorizontalAlignment(PdfRpt.Core.Contracts.HorizontalAlignment.Left); column.IsVisible(true); column.Order(countScore + 10); column.Width(1); column.HeaderCell("نمره تابستان"); }); columns.AddColumn(column => { column.PropertyName("viewTermic"); column.CellsHorizontalAlignment(PdfRpt.Core.Contracts.HorizontalAlignment.Left); column.IsVisible(true); column.Order(countScore + 11); column.Width(1); column.HeaderCell("ترم نمایشی"); }); columns.AddColumn(column => { column.PropertyName("Ghabol"); column.CellsHorizontalAlignment(PdfRpt.Core.Contracts.HorizontalAlignment.Left); column.IsVisible(true); column.Order(countScore + 12); column.Width(1); column.HeaderCell("قبول"); }); }); return pdfrpt.MainTableEvents(events => { events.DataSourceIsEmpty(message: "داده ای برای نمایش وجو د ندارد"); events.MainTableAdded(args => { var taxTable = new PdfPTable(1); // Create a clone of the MainTable's structure taxTable.RunDirection = 3; //taxTable.SetWidths(new float[] { 3, 3, 3 }); taxTable.WidthPercentage = 100f; taxTable.SpacingBefore = 10f; taxTable.AddSimpleRow( (data, cellProperties) => { data.Value = "مهر و امضای مدیر"; cellProperties.ShowBorder = false; cellProperties.HorizontalAlignment = HorizontalAlignment.Left; cellProperties.PdfFont = args.PdfFont; }); args.PdfDoc.Add(taxTable); }); }) .Export(export => { // export.ToExcel(); }) .Generate(data => data.AsPdfFile(fo.Name)); }
این کد رو برای CustomHeader م نوشتم :
var table = new PdfPTable(numColumns: 2) { WidthPercentage = 100 }; table.AddSimpleRow((cellData, cellProperties) => { cellData.Value = "باسمه تعالی " + "\r\n" + "حوزه علمیه امیر المومنین (ع) - معاونت آموزش - کارنامه تحصیلی طلبه"; cellProperties.PdfFont = PdfRptFont; cellProperties.PdfFontStyle = DocumentFontStyle.Bold; cellProperties.HorizontalAlignment = HorizontalAlignment.Center; cellProperties.RunDirection = PdfRunDirection.RightToLeft; }, (cellData, cellProperties) => { cellData.CellTemplate = new ImageFilePathField(); cellData.Value = _imagePath; cellProperties.HorizontalAlignment = HorizontalAlignment.Right; });
اولین مشکل اینه که متن هدر میاد سمت چپ در حالی که منHorizontalAlignment رو برابر Center کردم ، دوم اینکه چجوری میتونم کادر مشخصات طلبه رو در پایین ایجاد کنم وقتی قبلش گفتم که numcolumns : 2 هست؟
return new PdfReport().DocumentPreferences(doc =>
public IPdfReportData CreatePdfReport(DataTable dt,string OrganName,string DateFrom,string DateEnd,string FilePath) { FileStream fo = new FileStream(FilePath, FileMode.Create); fo.Close(); return new PdfReport().DocumentPreferences(doc => { doc.RunDirection(PdfRunDirection.RightToLeft); doc.Orientation(PageOrientation.Portrait); doc.PageSize(PdfPageSize.A4); doc.DocumentMetadata(new DocumentMetadata { Author = "AjansDaneshjo", Application = "PdfRpt", Keywords = "Report", Subject = "Test Rpt", Title = "Report" }); }) .DefaultFonts(fonts => { fonts.Path(Application.StartupPath+"\\BNAZANIN.ttf", Application.StartupPath + "\\BNAZNNBD.ttf"); fonts.Size(13); }) .PagesFooter(footer => { footer.DefaultFooter(PersianDate.ToPersianDateTime(DateTime.Now, "/", false, false)); }) .PagesHeader(header => { header.CustomHeader(new MasterDetailsHeaders { PdfRptFont = header.PdfFont ,DateFrom=DateFrom,DateTo= DateEnd,ProjTitle=ProjTitle }); }) .MainTableTemplate(template => { template.BasicTemplate(BasicTemplate.SilverTemplate); }) .MainTablePreferences(table => { table.ColumnsWidthsType(TableColumnWidthType.Relative); table.NumberOfDataRowsPerPage(50); table.GroupsPreferences(new GroupsPreferences { GroupType = GroupType.HideGroupingColumns, RepeatHeaderRowPerGroup = true, ShowOneGroupPerPage = true, SpacingBeforeAllGroupsSummary = 5f }); }) .MainTableDataSource(dataSource => { dataSource.DataTable(dt); }) .MainTableSummarySettings(summarySettings => { summarySettings.OverallSummarySettings(" جمع کل "); summarySettings.PageSummarySettings("جمع صفحه"); }) .MainTableColumns(columns => { columns.AddColumn(column => { column.PropertyName("rowNo"); column.IsRowNumber(true); column.CellsHorizontalAlignment(PdfRpt.Core.Contracts.HorizontalAlignment.Center); column.IsVisible(true); column.Order(0); column.Width(1); column.HeaderCell("ردیف"); }); columns.AddColumn(column => { column.PropertyName("Name_Family"); column.CellsHorizontalAlignment(PdfRpt.Core.Contracts.HorizontalAlignment.Center); column.IsVisible(true); column.Order(1); column.Width(2); column.HeaderCell("در اختیار"); column.ColumnItemsTemplate(template => { template.TextBlock(); template.DisplayFormatFormula(obj => obj == null ? string.Empty : string.Format("{0:n0}", obj)); }); }); columns.AddColumn(column => { column.PropertyName("DateAjans"); column.CellsHorizontalAlignment(PdfRpt.Core.Contracts.HorizontalAlignment.Center); column.IsVisible(true); column.Order(2); column.Width(2); column.HeaderCell("تاریخ"); column.ColumnItemsTemplate(template => { template.TextBlock(); template.DisplayFormatFormula(obj => obj == null ? string.Empty : PersianDate.ToPersianDateTime((DateTime)obj,"/",false,false) ); }); }); columns.AddColumn(column => { column.PropertyName("Receipt_number"); column.CellsHorizontalAlignment(PdfRpt.Core.Contracts.HorizontalAlignment.Center); column.IsVisible(true); column.Order(3); column.Width(2); column.HeaderCell("شماره قبض"); }); columns.AddColumn(column => { column.PropertyName("Price"); column.CellsHorizontalAlignment(PdfRpt.Core.Contracts.HorizontalAlignment.Center); column.IsVisible(true); column.Order(5); column.Width(2); column.HeaderCell("مبلغ"); column.ColumnItemsTemplate(template => { template.TextBlock(); template.DisplayFormatFormula(obj => obj == null ? string.Empty : string.Format("{0:n0}", obj)); }); column.AggregateFunction(aggregateFunction => { aggregateFunction.NumericAggregateFunction(AggregateFunction.Sum); aggregateFunction.DisplayFormatFormula(obj => obj == null ? string.Empty : string.Format("{0:n0} ریال", obj)); }); }); columns.AddColumn(column => { column.PropertyName("Organ_Name"); column.CellsHorizontalAlignment(PdfRpt.Core.Contracts.HorizontalAlignment.Center); column.IsVisible(true); column.Order(5); column.Width(2); column.HeaderCell("نام سازمان"); column.Group(true, (val1, val2) => { return val1.ToString() == val2.ToString(); }); }); columns.AddColumn(column => { column.PropertyName("Destination"); column.CellsHorizontalAlignment(PdfRpt.Core.Contracts.HorizontalAlignment.Center); column.IsVisible(true); column.Order(4); column.Width(2); column.HeaderCell("مقصد"); }); }) .MainTableEvents(events => { events.DataSourceIsEmpty(message: "There is no data available to display."); }) .Export(export => { export.ToExcel(); }) .Generate(data => data.AsPdfFile(fo.Name/*string.Format("{0}\\RptCalculatedFieldsSample-{1}.pdf", Application.StartupPath, Guid.NewGuid().ToString("N")))*/)); }
public class MasterDetailsHeaders : IPageHeader { public IPdfFont PdfRptFont { set; get; } public string DateFrom; public string DateTo; public string ProjTitle; public PdfGrid RenderingGroupHeader(Document pdfDoc, PdfWriter pdfWriter, IList<CellData> newGroupInfo, IList<SummaryCellData> summaryData) { var table = new PdfGrid(numColumns: 1) { WidthPercentage = 100 }; var organName = newGroupInfo.GetSafeStringValueOf("Organ_Name"); table.AddSimpleRow( (cellData, cellProperties) => { cellData.Value = " گزارش " + organName + " از تاریخ " + DateFrom + " الی " + DateTo; cellProperties.PdfFont = PdfRptFont; cellProperties.PdfFontStyle = DocumentFontStyle.Bold; cellProperties.HorizontalAlignment = HorizontalAlignment.Center; cellProperties.RunDirection = PdfRunDirection.RightToLeft; }); return table.AddBorderToTable(borderColor: BaseColor.LIGHT_GRAY, spacingBefore: 5f); } public PdfGrid RenderingReportHeader(Document pdfDoc, PdfWriter pdfWriter, IList<SummaryCellData> summaryData) { return null; }