2014-01-07 7 views
0

Я хочу добавить номера страниц в заголовок файла itextsharp PDF. Я создаю pdf-файл из html (ретранслятор asp.net) при нажатии кнопки. Я извлекаю данные в datatable в таблицу PDF.Добавить номер страницы itextsharp

protected void btnExportPdf_Click(object sender, EventArgs e) 
    { 
     BaseFont bf = BaseFont.CreateFont(Server.MapPath("~/Fonts/THSarabunNew.ttf"), BaseFont.IDENTITY_H, BaseFont.EMBEDDED); 

     Font defaultFont = new Font(bf, 12); 
     Font header = new Font(bf, 14, Font.BOLD); 
     Font headTB = new Font(bf, 12, Font.BOLD); 

     Response.ContentType = "application/pdf"; 
     Response.AddHeader("Content-Disposition", "attachment;filename=Report.pdf"); 
     Response.Cache.SetCacheability(HttpCacheability.NoCache); 
     StringWriter sw = new StringWriter(); 
     HtmlTextWriter hw = new HtmlTextWriter(sw); 
     //this.Page.RenderControl(hw); แปลงข้อมูลทั้งหน้าให้เป็น pdf 

     StringReader sr = new StringReader(sw.ToString()); 
     Document pdfDoc = new Document(PageSize.A4, 25f, 25f, 15f, 15f); // left , right , top , bottom 

     HTMLWorker htmlparser = new HTMLWorker(pdfDoc); 
     PdfWriter.GetInstance(pdfDoc, Response.OutputStream); 

     PdfPTable PdfTable = new PdfPTable(GridView1.Columns.Count); 
     PdfPCell PdfPCell = null; 

     // Write Header ที่ PdfCell ใน PdfTable 
     for (int column = 0; column < GridView1.Columns.Count; column++) 
     { 
      PdfPCell = new PdfPCell(new Phrase(new Chunk(GridView1.Columns[column].HeaderText.ToString(), headTB))); 
      PdfPCell.Column.Alignment = Element.ALIGN_CENTER; 
      PdfTable.AddCell(PdfPCell); 
     } 

     // Write Data ที่ PdfCell ใน PdfTable 
     for (int row = 0; row < GridView1.Rows.Count; row++) 
     { 
      for (int col = 0; col < GridView1.Columns.Count; col++) 
      { 
       PdfPCell = new PdfPCell(new Phrase(new Chunk(GridView1.Rows[row].Cells[col].Text, defaultFont))); 
       PdfTable.AddCell(PdfPCell); 

      } 
     } 


     PdfTable.TotalWidth = 530f; 
     PdfTable.LockedWidth = true; 

     pdfDoc.Open(); 


     Paragraph head1 = new Paragraph(" รายงานข้อมูลการใช้งานรถยนต์ รายวัน ของ วันที่ " + System.DateTime.Now.ToString("dd/MM/yyyy"), header); 
     head1.Alignment = Element.ALIGN_CENTER; 
     pdfDoc.Add(head1); 


     Paragraph head2 = new Paragraph(" บริษัท ซีพี รีเทลลิ้งค์ จำกัด ", header); 
     head2.Alignment = Element.ALIGN_CENTER; 
     pdfDoc.Add(head2); 


     Paragraph head3 = new Paragraph("ของ ", header); 
     head3.Alignment = Element.ALIGN_CENTER; 
     pdfDoc.Add(head3); 

     Paragraph HR = new Paragraph(" ", defaultFont); 
     HR.Alignment = Element.ALIGN_CENTER; 
     pdfDoc.Add(HR); 

     pdfDoc.Add(PdfTable); 

     Paragraph count = new Paragraph("จำนวนที่ได้ทำการอนุมัติทั้งหมด : " + GridView1.Rows.Count, defaultFont); 
     count.Alignment = Element.ALIGN_RIGHT; 
     pdfDoc.Add(count); 

     //htmlparser.Parse(sr); 

     pdfDoc.Close(); 

     Response.Write(pdfDoc); 
     Response.End(); 



    } 
+0

Добро пожаловать в StackOverflow. Пожалуйста, просмотрите http://meta.stackexchange.com/questions/19190/should-questions-include-tags-in-their-titles принятый ответ Нет, они не должны. – Nico

ответ

0
I have added the footer by using following code in one of my project 

     MemoryStream mem = new MemoryStream();  // PDF data will be written here 
     PdfWriter pdfwriter1 = PdfWriter.GetInstance(doc, mem); //doc Document class Instance of itextsharp 
     doc.Open(); 
     pdfwriter1.PageEvent = new Footer(category); 
     doc.Add(table); // table is pregenrated PDFtable which i want to add in documnet 
     doc.Close(); 


    so in your scenario use following line before **pdfDoc.Close();** 
     PdfWriter pdfwriter1 = PdfWriter.GetInstance(pdfDoc, Response.OutputStream); 
     pdfwriter1.PageEvent = new Footer(); // add you logic to show page number 
Смежные вопросы