![](/img/trans.png)
[英]How to add header and footer in all page of pdf using iTextsharp version 5.2.0 in C#
[英]How to set Header/Footer fix height and text for all pages runtime creating PDF using iTextSharp
我正在使用asp.net c#中的iTextSharp版本5.3.5从DataTable生成PDF。 我的DataTable包含未知行,在生成PDF的同时生成多于一页的sp,我需要为每页修复一些页眉和页脚
代码 :
public DataTable dataTable;
protected void Page_Load(object sender, EventArgs e)
{
dataTable = getData();
Document document = new Document(PageSize.A4, 10, 10, 90, 10);
string path = Server.MapPath("PDFs");
PdfWriter writer = PdfWriter.GetInstance(document, new FileStream(path + "/Doc103.pdf", FileMode.Create));
document.Open();
CreatePages(document);
document.Close();
}
private void CreatePages(Document document)
{
document.NewPage();
document.Add(FormatPageHeaderPhrase(dataTable.TableName));
PdfPTable pdfTable = new PdfPTable(dataTable.Columns.Count);
pdfTable.DefaultCell.Padding = 3;
pdfTable.WidthPercentage = 100; // percentage
pdfTable.DefaultCell.BorderWidth = 2;
pdfTable.DefaultCell.HorizontalAlignment = Element.ALIGN_CENTER;
foreach (DataColumn column in dataTable.Columns)
{
pdfTable.AddCell(column.ColumnName);
}
pdfTable.HeaderRows = 1;
pdfTable.DefaultCell.BorderWidth = 1;
foreach (DataRow row in dataTable.Rows)
{
foreach (object cell in row.ItemArray)
{
pdfTable.AddCell(cell.ToString());
}
}
document.Add(pdfTable);
}
private static Phrase FormatPageHeaderPhrase(string value)
{
return new Phrase(value, FontFactory.GetFont(FontFactory.TIMES, 10, Font.BOLD, new BaseColor(255, 0, 0)));
}
PDF的屏幕截图:
有多种解决方法。
其中之一是通过使用页面事件。 您创建一个实现OnEndPage()方法的页面事件。 如果writer.PageNumber > 1
,则添加标题,例如:
ColumnText.ShowTextAligned(writer.DirectContent,
Element.ALIGN_RIGHT, "Continued from previous page", 36, 820, 0);
有关页面事件的更多信息,请参见第5章中的示例。
解决此问题的另一种方法是引入表头: table.HeaderRows = 1;
以便重复第一行(确保该行包含一个单元格,该单元格跨越所有列,并显示“从上一页继续”)。 为避免此标头出现在首页上,请使用table.SkipFirstHeader = true;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.