iTextSharp - Add image to PDF from Datatable

前端 未结 2 1446
说谎
说谎 2021-01-03 01:52

I try to create a PDF report from a datatable. One of the columns contents image. How can I extract the image from datatable and insert into PDF table? I\'m using iTextShap

2条回答
  •  长发绾君心
    2021-01-03 02:34

    I have suggested steps how shows how to add image into PDF, given below code snippet show how to add logo into your PDF using iTextsharp, follow provided below steps:

    1. I have provided link to download "itextsharp" component from given link http://sourceforge.net/projects/itextsharp/
    2. You have to add reference into your application.
    3. Next you have to add required namespaces "iTextsharp.text.html", "iTextsharp.text" to consume its best properties.
    4. Now you have to add code snippet into your application given at the end, add code snippet under "button click" in code behind.

    Hope it will work for you !!!

    protected void btnPDF_Click(object sender, ImageClickEventArgs e)
        {
            DataTable dtn = new DataTable();
            dtn = GetDataTable();
            dtPDF = dtn.Copy();
            for (int i = 0; i <= dtn.Rows.Count - 1; i++)
            {
                ExportToPdf(dtPDF);
            }
         }
    
    public void ExportToPdf(DataTable myDataTable)
        {
            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 = Server.MapPath(".") + "/logo/tpglogo.jpg";
                string imageFilePath = Server.MapPath(".") + "/logo/tpglogo.jpg";
                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);
            }
        }    
    

提交回复
热议问题