【问题标题】:Adding header and footer and aslo page number to pdf将页眉和页脚以及页码添加到pdf
【发布时间】:2011-07-02 09:23:57
【问题描述】:

在我的应用程序中,我正在将数据表数据导出为 pdf,它现在可以正常工作了这页纸。我该怎么做?

我写的代码是这样的:

public void ExportToPdf(DataTable ExDataTable)
{
    //Here set page size as A4
    Document pdfDoc = new Document(PageSize.A4, 10, 10, 10, 10);

    try
    {
        PdfWriter.GetInstance(pdfDoc, System.Web.HttpContext.Current.Response.OutputStream);
        pdfDoc.Open();

        //Set Font Properties for PDF File
        Font fnt = FontFactory.GetFont("Times New Roman", 6);

        DataTable dt = ExDataTable;

        if (dt != null)
        {
            PdfPTable PdfTable = new PdfPTable(dt.Columns.Count);

            PdfPCell PdfPCell = null;

            //Here we create PDF file tables
            for (int rows = 0; rows < dt.Rows.Count; rows++)
            {
                if (rows == 0)
                {
                    for (int column = 0; column < dt.Columns.Count; column++)
                    {
                        PdfPCell = new PdfPCell(new Phrase(new Chunk(dt.Columns[column].ColumnName.ToString(), fnt)));
                        PdfTable.AddCell(PdfPCell);
                    }
                }

                for (int column = 0; column < dt.Columns.Count; column++)
                {
                    PdfPCell = new PdfPCell(new Phrase(new Chunk(dt.Rows[rows][column].ToString(), fnt)));
                    PdfTable.AddCell(PdfPCell);
                }
            }

            // Finally Add pdf table to the document 
            pdfDoc.Add(PdfTable);
        }

        pdfDoc.Close();

        Response.ContentType = "application/pdf";

        //Set default file Name as current datetime
        Response.AddHeader("content-disposition", "attachment; filename=" + "Line-Shift Report" + ".pdf");

        System.Web.HttpContext.Current.Response.Write(pdfDoc);

        Response.Flush();
        Response.End();
    }

    catch (Exception ex)
    {
        Response.Write(ex.ToString());
    }
}

protected void Button1_Click1(object sender, EventArgs e)
{
    if (Session["source_table"] != null)
    {
        ExportToPdf(Session["source_table"] as DataTable);
    }
    else
    {
        Response.Write("No data to Export!");
    }
}

谁能帮我解决这个问题?

【问题讨论】:

  • 您使用什么库来生成 PDF?文档应该说明如何做你想做的事情。无论如何,如果您说明您正在使用什么库(例如 ActivePDF 等),您可能更有可能获得答案。
  • @Tim-Im 使用 itextsharp 库
  • 我建议在 ITextSharp 上进行搜索并添加页眉/页脚、页码等 - 这里有很多关于这些主题的帖子。您可能还想为您的问题添加 ITextSharp 的标签。不幸的是,我没有使用过 ITextSharp。
  • @Sweety 你有解决方案吗?实际上我正在尝试使用itextsharp。在搜索时我发现了你的帖子。如果你有解决方案,你能告诉我我应该如何达到同样的效果吗?
  • 我最近添加了一个不使用pageEvents的答案-stackoverflow.com/questions/18996323/…

标签: c# asp.net itextsharp


【解决方案1】:

创建一个新的页面事件类:

public class PageEvents : PdfPageEventHelper  
   {        
       public override void OnStartPage(PdfWriter writer, Document document)  
       {  
           base.OnStartPage(writer, document);    
           document.Add(...header...);  
       }  
   }

现在在您的代码中:

   class Program  
   {  
       static void Main(string[] args)  
       {  
           using (var pdfDoc = new Document(...))  
           {  
               var pdfWriter = PdfWriter.GetInstance(pdfDoc, new FileStream("Test.pdf", FileMode.Create));  
               pdfWriter.PageEvent = new PageEvents();  
               ....

【讨论】:

    【解决方案2】:

    您必须为页眉和页脚创建 pdftables。用标题图像/标题填充单元格。在页脚表中,您必须用页码填充单元格。

    【讨论】:

      猜你喜欢
      • 2020-07-23
      • 1970-01-01
      • 2015-12-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-12
      • 1970-01-01
      • 2021-03-22
      相关资源
      最近更新 更多