اندازهی قلم متن
تخمین مدت زمان مطالعهی مطلب:
یک دقیقه
فرض کنید که لیستی از کاربران را به همراه نام و تصاویر آنها داریم. قصد داریم این اطلاعات را در یک سلول نمایش دهیم و نه اینکه هر کدام را در سلولهای جداگانهای قرار دهیم. روش متداول انجام اینکار تعریف یک قالب سلول سفارشی با پیاده سازی اینترفیس IColumnItemsTemplate است. راه میانبری نیز برای حل این مساله وجود دارد:
میتوان از قابلیتهای محدود تبدیل HTML به PDF موجود در کلاس HTMLWorker استفاده کرد. البته نباید انتظار زیادی از این کلاس داشت، اما برای اینگونه مقاصد بسیار مفید است. در اینجا به کمک یک CalculatedField، مقدار جدید سلول را که یک جدول HTMLایی است، به منبع داده مورد استفاده تزریق میکنیم. سپس با استفاده از قالب Html، آنرا پردازش و نمایش خواهیم داد. کدهای کامل این مثال را در اینجا میتوانید ملاحظه کنید: (^)
columns.AddColumn(column => { column.PropertyName("User"); column.CellsHorizontalAlignment(HorizontalAlignment.Center); column.IsVisible(true); column.Order(1); column.Width(3); column.HeaderCell("User"); column.CalculatedField(list => { var user = list.GetSafeStringValueOf("User"); var photo = new Uri(list.GetSafeStringValueOf("Photo")); var image = string.Format("<img src='{0}' />", photo); return @"<table style='width: 100%;'> <tr> <td>" + user + @"</td> </tr> <tr> <td>" + image + @"</td> </tr> </table> "; }); column.ColumnItemsTemplate(template => { template.Html(); // Using iTextSharp's limited HTML to PDF capabilities (HTMLWorker class). }); });