【问题标题】:How to set Header/Footer fix height and text for all pages runtime creating PDF using iTextSharp如何为使用 iTextSharp 创建 PDF 的所有页面运行时设置页眉/页脚固定高度和文本
【发布时间】:2013-01-31 12:21:11
【问题描述】:

我在 asp.net c# 中使用 iTextSharp 5.3.5 版从我的 DataTable 生成 PDF。我的 DataTable 包含未知行,sp 而 PDF 生成如果需要超过一页,我需要为每页修复一些页眉和页脚

代码

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 截图:

【问题讨论】:

    标签: c# asp.net pdf pdf-generation itextsharp


    【解决方案1】:

    【讨论】:

    • 祝你好运,伙计
    【解决方案2】:

    有不同的方法来解决这个问题。

    其中之一是使用页面事件。您创建一个实现 OnEndPage() 方法的页面事件。如果writer.PageNumber > 1,则添加标题,例如:

    ColumnText.ShowTextAligned(writer.DirectContent,
        Element.ALIGN_RIGHT, "Continued from previous page", 36, 820, 0);
    

    有关页面事件的更多信息,请参阅chapter 5 中的示例。

    解决此问题的另一种方法是引入表头:table.HeaderRows = 1;,以便重复第一行(确保该行包含一个跨越所有列的单元格,显示“接上一页”)。为避免此页眉出现在第一页,请使用table.SkipFirstHeader = true;

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-04-30
      • 2013-09-30
      • 1970-01-01
      • 2012-04-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多