2011-07-02 19 views
0

私のアプリケーションでは、データシートのデータをpdfにエクスポートしていますので、ヘッダーとフッターを追加したいのですが、ページ番号を追加したいすべてのページにヘッダーに名前をレポートとして含める必要があります。どうやってやるの?ヘッダーとフッターとasloページ番号を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 libraryを使用する – Sweety

+0

ITextSharpで検索し、ヘッダー/フッター、ページ番号などを追加することをおすすめします。これらのトピックについては、ここに多数の記事があります。 ITextSharpのタグを質問に追加することもできます。残念ながら私はITextSharpを使用していません。 – Tim

答えて

0

ヘッダーとフッターのpdftablesを作成する必要があります。ヘッダーイメージ/見出しでセルを塗りつぶします。そしてフッタテーブルでは、ページ番号でセルを埋める必要があります。

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(); 
       .... 
関連する問題