将数据导出为pdf时出现问题

将数据导出为pdf时出现问题

问题描述:

Folloing函数将datatable作为参数并生成pdf作为输出..



这样工作正常......但是当pdf生成第一个时出现问题pdf页面附带列标题,但如果数据转到下一页没有任何标题..



如何将标题添加到下一页..


注意:对于此功能,我使用过iTextSharp.dll

Folloing function takes datatable as parameter and produces pdf as output..

This works fine... But Problem arises that When pdf generates the first page of pdf comes with Column header but if data goes to next page There is not any header..

How to add header to next page also..

Note: For this function i have used iTextSharp.dll

public void ExportToPdf(DataTable myDataTable)
{
  Session["CompanyName"] = "Mrinal";
  Document pdfDoc = new Document(PageSize.A4, 10, 10, 10, 10);
  try
  {
    PdfWriter.GetInstance(pdfDoc, 
      System.Web.HttpContext.Current.Response.OutputStream);
    pdfDoc.Open();
    Chunk c = new Chunk("" + 
      System.Web.HttpContext.Current.Session["CompanyName"] + "",
      FontFactory.GetFont("Verdana", 11));
    Paragraph p = new Paragraph();
    p.Alignment = Element.ALIGN_CENTER;
    p.Add(c);
    pdfDoc.Add(p);
    string clientLogo = HttpContext.Current.Session["CompanyName"].ToString();
    clientLogo = clientLogo.Replace(" ", "");
    string clogo = clientLogo + ".jpg";
    string imageFilePath = HttpContext.Current.Server.MapPath("../ClientLogo/" + clogo + "");
    iTextSharp.text.Image jpg = iTextSharp.text.Image.GetInstance(imageFilePath);
    //Resize image depend upon your need   
    jpg.ScaleToFit(80f, 60f);
    //Give space before image   
    jpg.SpacingBefore = 0f;
    //Give some space after the image   
    jpg.SpacingAfter = 1f;
    jpg.Alignment = Element.HEADER;
    pdfDoc.Add(jpg);
    Font font8 = FontFactory.GetFont("ARIAL", 7);
    DataTable dt = myDataTable;
    if (dt != null)
    {
      //Craete instance of the pdf table and set the number of column in that table  
      PdfPTable PdfTable = new PdfPTable(dt.Columns.Count);
      PdfPCell PdfPCell = null;
      for (int rows = 0; rows < dt.Rows.Count; rows++)
      {
        for (int column = 0; column < dt.Columns.Count; column++)
        {
          PdfPCell = new PdfPCell(new Phrase(new Chunk(dt.Rows[rows].Column].ToString(), font8)));
          PdfTable.AddCell(PdfPCell);
        }
      }
      //PdfTable.SpacingBefore = 15f; // Give some space after the text or it may overlap the table            
      pdfDoc.Add(PdfTable); // add pdf table to the document   
    }
    pdfDoc.Close();
    Response.ContentType = "application/pdf";
    Response.AddHeader("content-disposition", "attachment; filename= SampleExport.pdf");
    System.Web.HttpContext.Current.Response.Write(pdfDoc);
    Response.Flush();
    Response.End();
    //HttpContext.Current.ApplicationInstance.CompleteRequest();  
  }
  catch (DocumentException de)
  {
    System.Web.HttpContext.Current.Response.Write(de.Message);
  }
  catch (IOException ioEx)
  {
    System.Web.HttpContext.Current.Response.Write(ioEx.Message);
  }
  catch (Exception ex)
  {
    System.Web.HttpContext.Current.Response.Write(ex.Message);
  }
}
#endregion





这个问题是由于你没有明确指定pdf创建的标题行你必须使用PdfPTable.HeaderRows重复每页上的标题

供参考使用以下链接





http://*.com/questions/2062983/itextsharp-how-repeat-每页的pdfptable标题

http://forums.asp.net/t/1577892.aspx/1?iTextSharp+table+headers