Ann Sara
Ann Sara

Reputation: 69

Increase the width of two columns in PDF in c#

I am downloading a PDF using Itextsharp .I need to increase the width of two columns in pdf.I have tried using celcols.width ,however its not working.Now all the columns have same width.Any help will be really appreciated.Thanks in Advance`.

 protected void Button6_Click(object sender, EventArgs e)
    {
        try
        {

            string fromdate = "", todate = "";
            string compgrp = "All";


            var pdfDoc = new Document(PageSize.A3, 10f, 10f, 10f, 0f);
            System.IO.MemoryStream mStream = new System.IO.MemoryStream();
            PdfWriter writer = PdfWriter.GetInstance(pdfDoc, mStream);
            PdfPageEventHelper pageEventHelper = new PdfPageEventHelper();
            writer.PageEvent = pageEventHelper;
            HeaderFooter header = new HeaderFooter(new Phrase("Schedule report" + DateTime.Now.ToString("dd/MMM/yyyy hh:mm tt") + ""), false);
            header.BackgroundColor = new iTextSharp.text.Color(System.Drawing.ColorTranslator.FromHtml("#62e456"));
            // Remove the border that is set by default  
            header.Border = iTextSharp.text.Rectangle.TITLE;
            // Align the text: 0 is left, 1 center and 2 right.  
            header.Alignment = Element.ALIGN_CENTER;
            pdfDoc.Header = header;
            // Header.  
            pdfDoc.Open();
            string Connectionstring = ConfigurationManager.ConnectionStrings["SPCFConnectionString"].ConnectionString;
            SqlConnection cn = new SqlConnection(Connectionstring);
            cn.Open();
            try
            {
                if (ddl_clntsearch.SelectedValue.ToString() == "")
                {
                    compgrp = "All";
                }
                else
                {
                    compgrp = ddl_clntsearch.SelectedValue.ToString();
                }
                string[] querylist = new string[]
                     {
                                 "exec [SP0480_05] '" + compgrp +"','" + txt_mobnum.Text +"','"+txt_searchdate.Text+"','" + ddl_status.SelectedValue.ToString() +"'",

                     };

                string[] Headers = new string[]
                     {
                         "Date"," Name","Shift time","User","Remarks","Amount","Signature"
                     };

                foreach (string query in querylist)
                {
                    iTextSharp.text.Table pdfTableheader = new iTextSharp.text.Table(7, 1);
                    pdfTableheader.BorderWidth = 1; pdfTableheader.Width = 100; pdfTableheader.Spacing = 1;
                    //pdfTableheader.Padding = 1;
                    foreach (string items in Headers)
                    {
                        Cell cellCols = new Cell();
                        Chunk chunkCols = new Chunk();
                        cellCols.BackgroundColor = new iTextSharp.text.Color(System.Drawing.ColorTranslator.FromHtml("#62e05e"));
                        iTextSharp.text.Font ColFont = FontFactory.GetFont(FontFactory.TIMES_ROMAN, 12, iTextSharp.text.Font.BOLD, iTextSharp.text.Color.BLACK);
                        //if (items == "Name")
                        //{
                        //    cellCols.Width = 300f;
                        //}
                        //else
                        //{
                        //    cellCols.Width = 100f;
                        //}
                        chunkCols = new Chunk(items, ColFont);

                        cellCols.Add(chunkCols);
                        pdfTableheader.AddCell(cellCols);
                    }
                    pdfDoc.Add(pdfTableheader);
                    SqlCommand cmd = new SqlCommand(query, cn);
                    cmd.CommandTimeout = 30;
                    cmd.CommandType = CommandType.Text;
                    SqlDataReader dr = cmd.ExecuteReader();
                    DataTable dataTable = new DataTable();
                    dataTable.Load(dr);
                    object[] array = new object[dataTable.Columns.Count];

                    //dataTable.Rows.Add(array);
                    int cols = dataTable.Columns.Count;
                    int rows = dataTable.Rows.Count;
                    iTextSharp.text.Table pdfTable = new iTextSharp.text.Table(cols, rows);
                    pdfTable.BorderWidth = 1; pdfTable.Width = 100; pdfTable.Spacing = 2;
                    //pdfTable.Padding = 1; 

                    //creating table data (actual result)   

                    for (int k = 0; k <= rows - 1; k++)
                    {
                        for (int j = 0; j < cols; j++)
                        {


                            Cell cellRows = new Cell();
                            //if (k % 2 == 0)
                            cellRows.BackgroundColor = new iTextSharp.text.Color(System.Drawing.ColorTranslator.FromHtml("#ffffff"));

                            iTextSharp.text.Font RowFont = FontFactory.GetFont(FontFactory.HELVETICA,12);
                            Chunk chunkRows = new Chunk(dataTable.Rows[k][j].ToString(), RowFont);
                            cellRows.Add(chunkRows);

                            pdfTable.AddCell(cellRows);
                        }
                    }

                    pdfDoc.Add(pdfTable);
                }
            }
            catch (Exception exc)
            {

            }

            //creating table headers  
            cn.Close();
            pdfDoc.Close();

            Response.ContentType = "application/pdf";
            Response.AddHeader("Content-Disposition", string.Format("attachment;filename=REF-{0}.pdf", "Report"));
            Response.BinaryWrite(mStream.ToArray());


        }
        catch (Exception ex)
        {

        }
    }

Here I need to increase the width of 2nd and 3rd column ie Name and User

Upvotes: 0

Views: 666

Answers (1)

Tomato32
Tomato32

Reputation: 2245

You should set the width of the columns. And you can do that by applying them to the table object. For example:

float[] widths = new float[] { 1f, 2f }; //relative col widths in proportions - 1/3 and 2/3
table.SetWidths(widths);

You can visit this link to refer more: https://www.mikesdotnetting.com/article/86/itextsharp-introducing-tables Hope to help, my friend!

Upvotes: 1

Related Questions