يكي از نيازهاي تهيه يك گزارش خوب، تكرار سرستونها در صفحات مختلف است. شايد در ابتدا اين ايده مطرح شود كه مثلا ميخواهيم 25 رديف را در هر صفحه نمايش دهيم. بر همين اساس ميتوان هر 25 رديف يكبار، يك سطر footer و در ادامه در صفحه بعد يك سطر header را اضافه كرد و همينطور الي آخر. مهمترين ايراد اين روش آن است كه الزامي ندارد كه واقعا 25 رديف در يك صفحه جا شوند. عموما بر اساس اندازهي محتواي نمايش داده شده، ممكن است يك صفحه 20 رديف شود، صفحهاي ديگر 10 رديف. اين مورد تمام محاسبات را به هم خواهد ريخت. به همين جهت دو خاصيت مهم به نامهاي HeaderRows و FooterRows در شيء PdfPTable قابل تنظيم است. اين دو خاصيت نياز به اندكي توضيح دارند كه در ادامه ذكر خواهد شد:
using System.Diagnostics;
using System.IO;
using iTextSharp.text;
using iTextSharp.text.pdf;
namespace HeadersAndFooters
{
class Program
{
static void Main(string[] args)
{
using (var pdfDoc = new Document(PageSize.A4))
{
var pdfWriter = PdfWriter.GetInstance(pdfDoc, new FileStream("Test.pdf", FileMode.Create));
pdfDoc.Open();
var table1 = new PdfPTable(1);
table1.HeaderRows = 2;
table1.FooterRows = 1;
//header row
table1.AddCell(new Phrase("header"));
//footer row
table1.AddCell(new Phrase("footer"));
//adding some rows
for (int i = 0; i < 70; i++)
{
table1.AddCell(new Phrase("Row " + i));
}
pdfDoc.Add(table1);
}
//open the final file with adobe reader for instance.
Process.Start("Test.pdf");
}
}
}
HeaderRows = 2 به اين معنا است كه 2 سطري را كه بلافاصله در ادامه اضافه ميكنيد، در محاسبات نمايش خودكار header يا footer قرار ميگيرند. FooterRows = 1 به اين معنا است كه از اين تعداد، آخرين سطر، معناي footer را ميدهد. بنابراين اولين table1.AddCell ، همان header خودكار نمايش داده شده در بالاي تمام صفحات خواهد بود و table1.AddCell بعدي جهت نمايش footer خودكار بكار ميرود. اين دو سطر كاربرد ديگري ندارند.
مثالي ديگر جهت مشخص شدن اين مفاهيم:
table1.HeaderRows = 3;
table1.FooterRows = 1;
از اين طراحي لذت ميبريد؟!