0

I want add dynamic number page one by one pages in the stringbuilder before the pdf document is generated whit itextsharp through stringBuilder and executereader.

The data is generate from sql query.

This is the void, all the document in pdf is generated here:

   protected void GeneraReporte_Click(object sender, EventArgs e) 
{
    using (SqlConnection cone = conexion.conectar())
    {
        using (SqlCommand comand = new SqlCommand("REPORTEALTASBAJAS", cone))
        {
            comand.CommandType = CommandType.StoredProcedure;
            comand.Parameters.Add("@VALOR", SqlDbType.Int).Value = altas;[...]
            cone.Open();
            using (SqlDataReader dr = comand.ExecuteReader())
            {
                if (dr.HasRows)
                {
                    DataTable dt = new DataTable();
                    dt.Columns.AddRange(new DataColumn[13] {
                        new DataColumn("USUARIO"),[...]
                        });
                    dt.Load(dr); //load grid with sql 
                    using (StringWriter sw = new StringWriter())
                    {
                        using (HtmlTextWriter hw = new HtmlTextWriter(sw))
                        {
                            StringBuilder sb = new StringBuilder();
                            sb.Append("<br/>");
                            //HEADER
                            sb.Append("<table style='font-size: 8px;' align='center' width='95%' cellspacing='0' cellpadding='2'>");
                            sb.Append("<tr>");
                            sb.Append("<td align='left'>");
                            sb.Append(@"<img height='50x' src=" + UAT + " />");
                            sb.Append("</td>");
                            sb.Append("<td align='center' colspan = '1'>");
                            sb.Append(@"<img height='50x' align='center' src=" + logoCentro + " />");
                            sb.Append("</td>");
                            sb.Append("<td colspan='1' align='right'>");
                            sb.Append(@"<img height='50x' align='right' src=" + FCAV + " />");
                            sb.Append("<br/></td></tr>");
                            sb.Append("<tr ><td><br/></td><td><br/></td><td><br/></td></tr>");
                            sb.Append("<tr><td align='left'><b></b></td><td align='center'>
                            sb.Append("REPORTE DE ALTAS Y BAJAS");                                
                            sb.Append("</b></td><td align='right'><b></b></td></tr>");
                            sb.Append("<tr ><td><br/></td><td><br/></td><td><br/></td></tr>");
                            if (dr.Read())
                            {
                                if (ddldepto.SelectedItem.Text == "--Todos--")
                                {
                                }
                                else
                                {
                                    sb.Append("<tr><td align='left''><b>SRIA./COORD: " + dr["NOMBREC"].ToString() + "</b></td>");
                                    if (dr["NOMBRED"] == DBNull.Value)
                                    {
                                        sb.Append("<td align='center'><b></b></td>");
                                    }
                                    else
                                    {
                                        sb.Append("<td align='center'><b>DEPARTAMENTO: " + dr["NOMBRED"].ToString()+ "</b></td>");
                                    }
                                    sb.Append("<td align='right'><b>RESPONSABLE: " + dr["NOMBREP"].ToString() + "</b></td></tr>");
                                }
                            }
                            sb.Append("</table>");
                            sb.Append("<br/>");
                            //ITERATE 
                            sb.Append("<table align='center' width='95%' style='' border='1'>");
                            sb.Append("<tr>");
                            foreach (DataColumn column in dt.Columns)
                            {
                                sb.Append("<th style='font-size:9px;text-align: center;color:#000'>");
                                sb.Append("<b>");
                                sb.Append(column.ColumnName);
                                sb.Append("</b>");
                                sb.Append("</th>");
                            }

                            sb.Append("</tr>");
                            foreach (DataRow row in dt.Rows)
                            {
                                sb.Append("<tr style='font-size: 8px;'>");
                                foreach (DataColumn column in dt.Columns)
                                {
                                    sb.Append("<td width='100%'>");
                                    sb.Append(row[column]);
                                    sb.Append("</td>");
                                }
                                sb.Append("</tr>");
                            }
                            sb.Append("</table>");
                            sb.Append("<br/>");
                            //FOOTER
                            sb.Append("<br/>");
                            sb.Append("<table align='center' width='95%'>");
                            sb.Append("<tr><td align='left'>SECRETARIA ADMINISTRATIVA:_________________________________</td><td align='left'>CONTRALORIA INTERNA:______________________________</td></tr>");

                            sb.Append("</table>");

                            //EXPORTA EL STRING COMO PDF
                            StringReader sr = new StringReader(sb.ToString());
                            Document pdfDoc = new Document(PageSize.LEGAL.Rotate(), 10f, 10f, 10f, 0f);
                            HTMLWorker htmlparser = new HTMLWorker(pdfDoc);
                            PdfWriter writer = PdfWriter.GetInstance(pdfDoc, Response.OutputStream);
                            pdfDoc.Open();
                            htmlparser.Parse(sr);
                            pdfDoc.Close();
                            Response.ContentType = "application/pdf";
                            Response.AddHeader("content-disposition", "attachment;filename=Reporte.pdf");
                            Response.Cache.SetCacheability(HttpCacheability.NoCache);
                            Response.Write(pdfDoc);
                            Response.End();
                        }
                    }
                }
                else
                {
                    notif.Visible = true;
                }
            }
        }
    }
}
  • did u want to add page number on pdf document or add pdf pages dynamically ? – Anurag Jain Sep 22 '15 at 14:19
  • i want add the page number before pdf is generated. – Abner Coronado Sep 22 '15 at 14:32
  • You can't add a page number *before* some PDF is generated, you can add page numbers *while* you're generating PDF and as indicated by Daniel A. White, this question has been answered (many times) before: you need to use **Page Events**. Also: you shouldn't use `HTMLWorker`. It has been abandoned in favor of [XML Worker](http://itextpdf.com/product/xml_worker). – Bruno Lowagie Sep 22 '15 at 14:54

0 Answers0