2011-07-02 129 views
0

在我的應用程序中,我正在將數據表格數據導出到PDF,現在我的工作正常了我想爲它添加頁眉和頁腳,並且還要添加頁碼希望標題在所有頁面中包含名稱作爲報告。我怎樣才能做到這一點?添加頁眉和頁腳,以及頁面編號爲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!"); 
    } 
} 

誰能幫助我在這?

+0

是您使用的庫生成PDF?文檔應該指出如何去做你正在做的事情。無論如何,如果您陳述您正在使用的庫(例如,ActivePDF等),您可能有更好的機會獲得答案。 – Tim

+0

@ Tim-Im使用itextsharp庫 – Sweety

+0

我建議在ITextSharp上進行搜索並添加頁眉/頁腳,頁碼等等 - 關於這些主題,這裏有許多關於SO的文章。你也可能想爲ITextSharp添加一個標籤到你的問題。不幸的是我沒有使用ITextSharp。 – Tim

回答

0

您必須爲header和footer創建pdftables。用單元格圖像/標題填充單元格。並在頁腳表中,你必須填寫單元格的頁面號。在你的代碼

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

現在:

1

創建一個新的頁面事件類

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(); 
       ....