Showing posts with label How to create PDF using itextSharp in mvc or asp.net.. Show all posts
Showing posts with label How to create PDF using itextSharp in mvc or asp.net.. Show all posts

Create PDF using itextSharp in Asp.net MVC or Asp.net Webforms

Create Invoice PDF using itextSharp


public bool GenerateInvoice(GenerateInvoiceRequestModel GenerateInvoiceRequest, string InvoicePath, ref string pathFileName)
        {
            try
            {
                var InvoiceDetails = GetData(InvoiceRequest);//get data for PDF
                if (InvoiceDetails != null)
                {
                    Document document = new Document();
                    IFont BOLD = new IFont(iTextSharp.text.Font.FontFamily.TIMES_ROMAN, 9, iTextSharp.text.Font.BOLD);
                    IFont ExtraBOLD = new IFont(iTextSharp.text.Font.FontFamily.TIMES_ROMAN, 13, iTextSharp.text.Font.BOLD);
                    IFont NORMAL = new IFont(iTextSharp.text.Font.FontFamily.TIMES_ROMAN, 8);
                    IFont SMALL = new IFont(iTextSharp.text.Font.FontFamily.TIMES_ROMAN, 7, iTextSharp.text.Font.NORMAL);
                    IFont SMALL_BOLD = new IFont(iTextSharp.text.Font.FontFamily.TIMES_ROMAN, 7, iTextSharp.text.Font.BOLD);
                    iTextSharp.text.Rectangle pageSize = new iTextSharp.text.Rectangle(216f, 230f);
                    string InvoiceFileNm1 = string.Empty;
                    //InvoiceFileNm1 =InvoiceDetails.Invoice.ActualInvoiceNo +"_"+ DateTime.Now.ToString("ddMMyyhhmmss");
                    InvoiceFileNm1 = InvoiceDetails.Invoice.ActualInvoiceNo;
                    string path = string.Empty;
                    string InvoiceFileName = InvoiceFileNm1.Replace(@"/", "");
                    if (string.IsNullOrEmpty(InvoicePath))
                    {
                        throw new ApplicationException("Path Not Found.");
                    }
                    else
                    {
                        path = InvoicePath;
                    }

                    if (!Directory.Exists(path))
                    {
                        Directory.CreateDirectory(path);
                    }

                    string fileName = InvoiceFileName + ".pdf";
                    pathFileName = InvoicePath + fileName;
                    using (MemoryStream ms = new MemoryStream())
                    {
                        PdfWriter writer = PdfWriter.GetInstance(document, new FileStream("" + pathFileName + "", FileMode.Create));
                        var pageEventHelper = new PageEventHelper();
                        writer.PageEvent = pageEventHelper;
                    }
                    //======================================== document- start ==========================================//
                    document.Open();
             
                    //======================================== Invoice Header Table - start ==========================================//
                    var tableHeaderLayout = new PdfPTable(3);
                    float[] headersLayout = { 50, 15, 35 };
                    tableHeaderLayout.SetWidths(headersLayout);            
                    tableHeaderLayout.WidthPercentage = 100;
                    tableHeaderLayout.AddCell(new PdfPCell(new Phrase("Invoice", new Font(ExtraBOLD))) { Border = 0,Colspan=3, HorizontalAlignment = Element.ALIGN_CENTER });

                    tableHeaderLayout.AddCell(new PdfPCell(new Phrase("  ")) { Border = 0, HorizontalAlignment = Element.ALIGN_LEFT });
                    tableHeaderLayout.AddCell(new PdfPCell(new Phrase("  ")) { Border = 0, HorizontalAlignment = Element.ALIGN_LEFT });
                    tableHeaderLayout.AddCell(new PdfPCell(new Phrase("  ")) { Border = 0, HorizontalAlignment = Element.ALIGN_CENTER });
                    tableHeaderLayout.AddCell(new PdfPCell(new Phrase("  ")) { Border = 0, HorizontalAlignment = Element.ALIGN_LEFT });
                    tableHeaderLayout.AddCell(new PdfPCell(new Phrase("  ")) { Border = 0, HorizontalAlignment = Element.ALIGN_LEFT });
                    tableHeaderLayout.AddCell(new PdfPCell(new Phrase("  ")) { Border = 0, HorizontalAlignment = Element.ALIGN_CENTER });

                    tableHeaderLayout.AddCell(new PdfPCell(LableWithValue("GSTIN:", InvoiceDetails.CompanyDetails.GSTINNO)) { Border = 0, HorizontalAlignment = Element.ALIGN_LEFT });
                    tableHeaderLayout.AddCell(new PdfPCell(new Phrase("", new Font(NORMAL))) { Border = 0, HorizontalAlignment = Element.ALIGN_LEFT });
                    tableHeaderLayout.AddCell(new PdfPCell(new Phrase("", new Font(BOLD))) { Border = 0, HorizontalAlignment = Element.ALIGN_CENTER });

                    tableHeaderLayout.AddCell(new PdfPCell(LableWithValue("Name:", InvoiceDetails.CompanyDetails.ComName)) { Border = 0, HorizontalAlignment = Element.ALIGN_LEFT });
                    tableHeaderLayout.AddCell(new PdfPCell(new Phrase("", new Font(NORMAL))) { Border = 0, HorizontalAlignment = Element.ALIGN_LEFT });
                    tableHeaderLayout.AddCell(new PdfPCell(new Phrase("", new Font(BOLD))) { Border = 0, HorizontalAlignment = Element.ALIGN_CENTER });

                    tableHeaderLayout.AddCell(new PdfPCell(LableWithValue("Address:", InvoiceDetails.CompanyDetails.LocationAddress)) { Border = 0, HorizontalAlignment = Element.ALIGN_LEFT });
                    tableHeaderLayout.AddCell(new PdfPCell(new Phrase("", new Font(NORMAL))) { Border = 0, HorizontalAlignment = Element.ALIGN_LEFT });
                    tableHeaderLayout.AddCell(new PdfPCell(new Phrase("", new Font(BOLD))) { Border = 0, HorizontalAlignment = Element.ALIGN_CENTER });

                    tableHeaderLayout.AddCell(new PdfPCell(new Phrase("  ", new Font(NORMAL))) { Border = 0, HorizontalAlignment = Element.ALIGN_LEFT });
                    tableHeaderLayout.AddCell(new PdfPCell(new Phrase(" ", new Font(NORMAL))) { Border = 0, HorizontalAlignment = Element.ALIGN_LEFT });
                    tableHeaderLayout.AddCell(new PdfPCell(new Phrase(" ", new Font(BOLD))) { Border = 0, HorizontalAlignment = Element.ALIGN_CENTER });
               
                    tableHeaderLayout.AddCell(new PdfPCell(LableWithValue("Serial Number of Invoice:", InvoiceDetails.Invoice.ActualInvoiceNo)) { Border = 0, HorizontalAlignment = Element.ALIGN_LEFT });              
                    tableHeaderLayout.AddCell(new PdfPCell(LableWithValue("Price and Payment Terms:", "")) { Border = 0,Colspan=2, HorizontalAlignment = Element.ALIGN_LEFT });

                    tableHeaderLayout.AddCell(new PdfPCell(LableWithValue("Date of Invoice:", InvoiceDetails.Invoice.InvoiceDate)) { Border = 0, HorizontalAlignment = Element.ALIGN_LEFT });
                    tableHeaderLayout.AddCell(new PdfPCell(new Phrase(InvoiceDetails.Invoice.PriceAndPaymentTerms, new Font(NORMAL))) { Border = 0,Colspan=2, HorizontalAlignment = Element.ALIGN_LEFT });
         
                    tableHeaderLayout.AddCell(new PdfPCell(LableWithValue("Purchase Order No:", InvoiceDetails.Invoice.PONumber)) { Border = 0, HorizontalAlignment = Element.ALIGN_LEFT });
                    tableHeaderLayout.AddCell(new PdfPCell(new Phrase("", new Font(NORMAL))) { Border = 0, HorizontalAlignment = Element.ALIGN_LEFT });
                    tableHeaderLayout.AddCell(new PdfPCell(new Phrase("", new Font(BOLD))) { Border = 0, HorizontalAlignment = Element.ALIGN_CENTER });
                    tableHeaderLayout.AddCell(new PdfPCell(LableWithValue("PO Date:", InvoiceDetails.Invoice.PODate)) { Border = 0, HorizontalAlignment = Element.ALIGN_LEFT });
                    tableHeaderLayout.AddCell(new PdfPCell(new Phrase("", new Font(NORMAL))) { Border = 0, HorizontalAlignment = Element.ALIGN_LEFT });
                    tableHeaderLayout.AddCell(new PdfPCell(new Phrase("", new Font(BOLD))) { Border = 0, HorizontalAlignment = Element.ALIGN_CENTER });

                    tableHeaderLayout.AddCell(new PdfPCell(new Phrase("Details of Receiver(Billed to)\n", new Font(BOLD))) { Border = 0, HorizontalAlignment = Element.ALIGN_LEFT });
                    tableHeaderLayout.AddCell(new PdfPCell(new Phrase("", new Font(BOLD))) { Border = 0, HorizontalAlignment = Element.ALIGN_CENTER });
                    tableHeaderLayout.AddCell(new PdfPCell(new Phrase("Details of Consignee (Shipped to)\n", new Font(BOLD))) { Border = 0, HorizontalAlignment = Element.ALIGN_LEFT });

                    tableHeaderLayout.AddCell(new PdfPCell(LableWithValue("Name:", InvoiceDetails.Invoice.BankName)) { Border = 0, HorizontalAlignment = Element.ALIGN_LEFT });
                    tableHeaderLayout.AddCell(new PdfPCell(new Phrase("", new Font(NORMAL))) { Border = 0, VerticalAlignment = Element.ALIGN_BOTTOM, HorizontalAlignment = Element.ALIGN_LEFT });
                    tableHeaderLayout.AddCell(new PdfPCell(LableWithValue("Name:", InvoiceDetails.Invoice.ShipName)) { Border = 0, HorizontalAlignment = Element.ALIGN_LEFT });

                    tableHeaderLayout.AddCell(new PdfPCell(LableWithValue("Address:", InvoiceDetails.Invoice.BillingAddress)) { Border = 0, HorizontalAlignment = Element.ALIGN_LEFT });
                    tableHeaderLayout.AddCell(new PdfPCell(new Phrase("", new Font(NORMAL))) { Border = 0, VerticalAlignment = Element.ALIGN_BOTTOM, HorizontalAlignment = Element.ALIGN_LEFT });
                    tableHeaderLayout.AddCell(new PdfPCell(LableWithValue("Address:", InvoiceDetails.Invoice.ShippingAddres)) { Border = 0, HorizontalAlignment = Element.ALIGN_LEFT });

                    tableHeaderLayout.AddCell(new PdfPCell(LableWithValue("State:", InvoiceDetails.Invoice.BillStateName)) { Border = 0, HorizontalAlignment = Element.ALIGN_LEFT });
                    tableHeaderLayout.AddCell(new PdfPCell(new Phrase("", new Font(NORMAL))) { Border = 0, VerticalAlignment = Element.ALIGN_BOTTOM, HorizontalAlignment = Element.ALIGN_LEFT });
                    tableHeaderLayout.AddCell(new PdfPCell(LableWithValue("State:", InvoiceDetails.Invoice.ShipState)) { Border = 0, HorizontalAlignment = Element.ALIGN_LEFT });
               
                    tableHeaderLayout.AddCell(new PdfPCell(LableWithValue("State Code:", InvoiceDetails.Invoice.BillStateCode)) { Border = 0, HorizontalAlignment = Element.ALIGN_LEFT });
                    tableHeaderLayout.AddCell(new PdfPCell(new Phrase("", new Font(NORMAL))) { Border = 0, VerticalAlignment = Element.ALIGN_BOTTOM, HorizontalAlignment = Element.ALIGN_LEFT });
                    tableHeaderLayout.AddCell(new PdfPCell(LableWithValue("State Code:", InvoiceDetails.Invoice.ShipStateCode)) { Border = 0, HorizontalAlignment = Element.ALIGN_LEFT });
             
                    tableHeaderLayout.AddCell(new PdfPCell(LableWithValue("GSTIN/Unique ID:", InvoiceDetails.Invoice.BillGSTIN)) { Border = 0, HorizontalAlignment = Element.ALIGN_LEFT });
                    tableHeaderLayout.AddCell(new PdfPCell(new Phrase("", new Font(NORMAL))) { Border = 0, VerticalAlignment = Element.ALIGN_BOTTOM, HorizontalAlignment = Element.ALIGN_LEFT });
                    tableHeaderLayout.AddCell(new PdfPCell(LableWithValue("GSTIN/Unique ID:", InvoiceDetails.Invoice.ShipGSTIN)) { Border = 0, HorizontalAlignment = Element.ALIGN_LEFT });
                    document.Add(new Paragraph("\n"));
                    document.Add(tableHeaderLayout);
                    //===== Invoice Header Table- end =====//

                    //===================================================== Product Details Table  - start =======================================================//
                    PdfPTable pdfTable = new PdfPTable(15);
                    //pdfTable.LockedWidth = true;
                    float[] widths = new float[] { 4, 14, 9, 4, 4, 6, 10, 6, 10,4, 7,4,7, 4, 7 };
                    pdfTable.SetWidths(widths);
                    pdfTable.WidthPercentage = 100;
                    var tableInnerLayout_cgst = new PdfPTable(2);
                    float[] innerheaders = { 40, 60 };
                    tableInnerLayout_cgst.SetWidths(innerheaders);
                    tableInnerLayout_cgst.AddCell(new PdfPCell(new Phrase("CGST", new Font(SMALL))) { Colspan = 2, HorizontalAlignment = Element.ALIGN_CENTER, Padding = 3, BackgroundColor = iTextSharp.text.BaseColor.WHITE });
                    tableInnerLayout_cgst.AddCell(new PdfPCell(new Phrase("Rate", new Font(SMALL))) { HorizontalAlignment = Element.ALIGN_CENTER, Padding = 3, BackgroundColor = iTextSharp.text.BaseColor.WHITE });
                    tableInnerLayout_cgst.AddCell(new PdfPCell(new Phrase("Amount", new Font(SMALL))) { HorizontalAlignment = Element.ALIGN_CENTER, Padding = 3, BackgroundColor = iTextSharp.text.BaseColor.WHITE });

                    var tableInnerLayout_SGST = new PdfPTable(2);
                    tableInnerLayout_SGST.SetWidths(innerheaders);
                    tableInnerLayout_SGST.AddCell(new PdfPCell(new Phrase("SGST", new Font(SMALL))) { Colspan = 2, HorizontalAlignment = Element.ALIGN_CENTER, Padding = 3, BackgroundColor = iTextSharp.text.BaseColor.WHITE });
                    tableInnerLayout_SGST.AddCell(new PdfPCell(new Phrase("Rate", new Font(SMALL))) { HorizontalAlignment = Element.ALIGN_CENTER, Padding = 3, BackgroundColor = iTextSharp.text.BaseColor.WHITE });
                    tableInnerLayout_SGST.AddCell(new PdfPCell(new Phrase("Amount", new Font(SMALL))) { HorizontalAlignment = Element.ALIGN_CENTER, Padding = 3, BackgroundColor = iTextSharp.text.BaseColor.WHITE });

                    var tableInnerLayout_IGST = new PdfPTable(2);
                    tableInnerLayout_IGST.SetWidths(innerheaders);
                    tableInnerLayout_IGST.AddCell(new PdfPCell(new Phrase("IGST", new Font(SMALL))) { Colspan = 2, HorizontalAlignment = Element.ALIGN_CENTER, Padding = 3, BackgroundColor = iTextSharp.text.BaseColor.WHITE });
                    tableInnerLayout_IGST.AddCell(new PdfPCell(new Phrase("Rate", new Font(SMALL))) { HorizontalAlignment = Element.ALIGN_CENTER, Padding = 3, BackgroundColor = iTextSharp.text.BaseColor.WHITE });
                    tableInnerLayout_IGST.AddCell(new PdfPCell(new Phrase("Amount", new Font(SMALL))) { HorizontalAlignment = Element.ALIGN_CENTER, Padding = 3, BackgroundColor = iTextSharp.text.BaseColor.WHITE });

                    pdfTable.HorizontalAlignment = Element.ALIGN_LEFT;
                    PdfPCell cell;
                    cell = new PdfPCell(new Phrase("Sr.No", SMALL));
                    pdfTable.AddCell(cell);
                    cell = new PdfPCell(new Phrase("Description of Goods", SMALL));
                    pdfTable.AddCell(cell);
                    cell = new PdfPCell(new Phrase("HSN", SMALL));
                    pdfTable.AddCell(cell);
                    cell = new PdfPCell(new Phrase("Qty", SMALL));
                    pdfTable.AddCell(cell);
                    cell = new PdfPCell(new Phrase("Unit", SMALL));
                    pdfTable.AddCell(cell);
                    cell = new PdfPCell(new Phrase("Rate per Unit", SMALL));
                    pdfTable.AddCell(cell);
                    cell = new PdfPCell(new Phrase("Total", SMALL));
                    pdfTable.AddCell(cell);
                    cell = new PdfPCell(new Phrase("Discount", SMALL));
                    pdfTable.AddCell(cell);
                    cell = new PdfPCell(new Phrase("Taxable Value", SMALL));
                    pdfTable.AddCell(cell);            
                    pdfTable.AddCell(new PdfPCell(tableInnerLayout_cgst) {Colspan=2,Border = Rectangle.NO_BORDER, HorizontalAlignment = Element.ALIGN_CENTER, Padding = 0, BackgroundColor = iTextSharp.text.BaseColor.WHITE });
             
                    pdfTable.AddCell(new PdfPCell(tableInnerLayout_SGST) { Colspan = 2,Border = Rectangle.NO_BORDER, HorizontalAlignment = Element.ALIGN_CENTER, Padding = 0, BackgroundColor = iTextSharp.text.BaseColor.WHITE });
   
                    pdfTable.AddCell(new PdfPCell(tableInnerLayout_IGST) { Colspan = 2,Border = Rectangle.NO_BORDER, HorizontalAlignment = Element.ALIGN_CENTER, Padding = 0, BackgroundColor = iTextSharp.text.BaseColor.WHITE });
                    // loop here for multiple Products-Start
                    //===================================

                    //foreach (var item in paymentDueList.Invoice)
                    //{
                    int a = 1;
                    cell = new PdfPCell(new Phrase(a.ToString(), SMALL));
                    pdfTable.AddCell(cell);
                    cell = new PdfPCell(new Phrase(InvoiceDetails.Invoice.GoodsDescription, SMALL));
                    pdfTable.AddCell(cell);
                    cell = new PdfPCell(new Phrase(InvoiceDetails.Invoice.HSN, SMALL));
                    pdfTable.AddCell(cell);
                    cell = new PdfPCell(new Phrase(InvoiceDetails.Invoice.Quantity, SMALL));
                    pdfTable.AddCell(cell);
                    cell = new PdfPCell(new Phrase(InvoiceDetails.Invoice.Quantity, SMALL));
                    pdfTable.AddCell(cell);
                    cell = new PdfPCell(new Phrase(String.Format("{0:n0}", InvoiceDetails.Invoice.UnitPrice), SMALL));
                    pdfTable.AddCell(cell);
                    cell = new PdfPCell(new Phrase(String.Format("{0:n0}", InvoiceDetails.Invoice.Total), SMALL));
                    pdfTable.AddCell(cell);
                    cell = new PdfPCell(new Phrase(String.Format("{0:n0}", InvoiceDetails.Invoice.Discount), SMALL));
                    pdfTable.AddCell(cell);
                    cell = new PdfPCell(new Phrase(String.Format("{0:n0}", InvoiceDetails.Invoice.Total), SMALL));
                    pdfTable.AddCell(cell);
                    cell = new PdfPCell(new Phrase(String.Format("{0:n0}", InvoiceDetails.Invoice.CGSTRate), SMALL));
                    pdfTable.AddCell(cell);
                    cell = new PdfPCell(new Phrase(String.Format("{0:n0}", InvoiceDetails.Invoice.CGSTAmount), SMALL));
                    pdfTable.AddCell(cell);
                    cell = new PdfPCell(new Phrase(String.Format("{0:n0}", InvoiceDetails.Invoice.SGSTRate), SMALL));
                    pdfTable.AddCell(cell);
                    cell = new PdfPCell(new Phrase(String.Format("{0:n0}", InvoiceDetails.Invoice.SGSTAmount), SMALL));
                    pdfTable.AddCell(cell);
                    cell = new PdfPCell(new Phrase(String.Format("{0:n0}", InvoiceDetails.Invoice.IGSTRate), SMALL));
                    pdfTable.AddCell(cell);
                    cell = new PdfPCell(new Phrase(String.Format("{0:n0}", InvoiceDetails.Invoice.IGSTAmount), SMALL));
                    pdfTable.AddCell(cell);              
                    a++;
                    // }

                    // loop end
                    //=========
                    //============================blank line loop -start=======================//
                    for (int i = 1; i <= 3; i++)
                    {
                        for (int j = 1; j <= 15; j++)
                        {
                            cell = new PdfPCell(new Phrase(" ", SMALL));
                            pdfTable.AddCell(cell);
                        }
                    }

                    cell = new PdfPCell(new Phrase("Freight", NORMAL));
                    cell.Colspan = 6;
                    cell.Border = 0;
                    cell.BorderWidthLeft = 0.5f;
                    pdfTable.AddCell(cell);
                    cell = new PdfPCell(new Phrase(String.Format("{0:n}", InvoiceDetails.Invoice.FreightTotal), SMALL));
                    pdfTable.AddCell(cell);
                    cell = new PdfPCell(new Phrase("", SMALL));
                    pdfTable.AddCell(cell);
                    cell = new PdfPCell(new Phrase("", SMALL));
                    pdfTable.AddCell(cell);
                    cell = new PdfPCell(new Phrase("", SMALL));
                    pdfTable.AddCell(cell);
                    cell = new PdfPCell(new Phrase("", SMALL));
                    pdfTable.AddCell(cell);
                    cell = new PdfPCell(new Phrase("", SMALL));
                    pdfTable.AddCell(cell);
                    cell = new PdfPCell(new Phrase("", SMALL));
                    pdfTable.AddCell(cell);
                    cell = new PdfPCell(new Phrase("", SMALL));
                    pdfTable.AddCell(cell);
                    cell = new PdfPCell(new Phrase("", SMALL));
                    pdfTable.AddCell(cell);
                         
                    cell = new PdfPCell(new Phrase("Insurance", NORMAL));
                    cell.Colspan = 6;
                    cell.Border = 0;
                    cell.BorderWidthLeft = 0.5f;
                    pdfTable.AddCell(cell);
                    cell = new PdfPCell(new Phrase(String.Format("{0:n}",""), SMALL));
                    pdfTable.AddCell(cell);
                    cell = new PdfPCell(new Phrase("", SMALL));
                    pdfTable.AddCell(cell);
                    cell = new PdfPCell(new Phrase("", SMALL));
                    pdfTable.AddCell(cell);
                    cell = new PdfPCell(new Phrase("", SMALL));
                    pdfTable.AddCell(cell);
                    cell = new PdfPCell(new Phrase("", SMALL));
                    pdfTable.AddCell(cell);
                    cell = new PdfPCell(new Phrase("", SMALL));
                    pdfTable.AddCell(cell);
                    cell = new PdfPCell(new Phrase("", SMALL));
                    pdfTable.AddCell(cell);
                    cell = new PdfPCell(new Phrase("", SMALL));
                    pdfTable.AddCell(cell);
                    cell = new PdfPCell(new Phrase("", SMALL));
                    pdfTable.AddCell(cell);
             
                    cell = new PdfPCell(new Phrase("Packing and forwarding charges", NORMAL));
                    cell.Colspan = 6;
                    cell.Border = 0;
                    cell.BorderWidthLeft = 0.5f;
                    pdfTable.AddCell(cell);
                    cell = new PdfPCell(new Phrase(String.Format("{0:n}",""), SMALL));
                    pdfTable.AddCell(cell);
                    cell = new PdfPCell(new Phrase("", SMALL));
                    pdfTable.AddCell(cell);
                    cell = new PdfPCell(new Phrase("", SMALL));
                    pdfTable.AddCell(cell);
                    cell = new PdfPCell(new Phrase("", SMALL));
                    pdfTable.AddCell(cell);
                    cell = new PdfPCell(new Phrase("", SMALL));
                    pdfTable.AddCell(cell);
                    cell = new PdfPCell(new Phrase("", SMALL));
                    pdfTable.AddCell(cell);
                    cell = new PdfPCell(new Phrase("", SMALL));
                    pdfTable.AddCell(cell);
                    cell = new PdfPCell(new Phrase("", SMALL));
                    pdfTable.AddCell(cell);
                    cell = new PdfPCell(new Phrase("", SMALL));
                    pdfTable.AddCell(cell);

                    cell = new PdfPCell(new Phrase("Total", SMALL_BOLD));
                    cell.Colspan = 6;
                    cell.VerticalAlignment = Element.ALIGN_MIDDLE;
                    cell.HorizontalAlignment = Element.ALIGN_RIGHT;
                    cell.Border = 0;
                    cell.BorderWidthLeft = 0.5f;
                    cell.BorderWidthBottom = 0.5f;
                    pdfTable.AddCell(cell);
                    cell = new PdfPCell(new Phrase(String.Format("{0:n0}", InvoiceDetails.Invoice.Total), SMALL));
                    pdfTable.AddCell(cell);
                    cell = new PdfPCell(new Phrase(String.Format("{0:n0}", InvoiceDetails.Invoice.Discount), SMALL));
                    pdfTable.AddCell(cell);
                    cell = new PdfPCell(new Phrase(String.Format("{0:n0}", InvoiceDetails.Invoice.Total), SMALL));
                    pdfTable.AddCell(cell);
                    cell = new PdfPCell(new Phrase("", SMALL));
                    pdfTable.AddCell(cell);
                    cell = new PdfPCell(new Phrase(String.Format("{0:n0}", InvoiceDetails.Invoice.CGSTAmount), SMALL));
                    pdfTable.AddCell(cell);
                    cell = new PdfPCell(new Phrase("", SMALL));
                    pdfTable.AddCell(cell);
                    cell = new PdfPCell(new Phrase(String.Format("{0:n0}", InvoiceDetails.Invoice.SGSTAmount), SMALL));
                    pdfTable.AddCell(cell);
                    cell = new PdfPCell(new Phrase("", SMALL));
                    pdfTable.AddCell(cell);
                    cell = new PdfPCell(new Phrase(String.Format("{0:n0}", InvoiceDetails.Invoice.IGSTAmount), SMALL));
                    pdfTable.AddCell(cell);
                             
                    document.Add(pdfTable);

                    //====== Product Details Table- end ============//

                    //============================================================== Invoice Table Footer Section - start ==============================================================//
                    var tblFooter = new PdfPTable(3);
                    float[] tblFooterLayout = { 45,30,25};
                    tblFooter.SetWidths(tblFooterLayout);
                    tblFooter.WidthPercentage = 100;
               
                    tblFooter.AddCell(new PdfPCell(LableWithValue("Total Invoice Value (in figure):", String.Format("{0:n0}", InvoiceDetails.Invoice.TotalSalesPrice))) { Border = 0, HorizontalAlignment = Element.ALIGN_LEFT });
                    tblFooter.AddCell(new PdfPCell(new Phrase("", new Font(NORMAL))) { Border = 0, HorizontalAlignment = Element.ALIGN_LEFT });
                    tblFooter.AddCell(new PdfPCell(new Phrase("", new Font(NORMAL))) { Border = 0, HorizontalAlignment = Element.ALIGN_LEFT });
               
                    tblFooter.AddCell(new PdfPCell(LableWithValue("Total Invoice Value (in words):", InvoiceDetails.Invoice.AmountWords)) { Border = 0,Colspan=3, HorizontalAlignment = Element.ALIGN_LEFT });

                    tblFooter.AddCell(new PdfPCell(new Phrase("", new Font(NORMAL))) { Border = 0, HorizontalAlignment = Element.ALIGN_LEFT });
                    tblFooter.AddCell(new PdfPCell(new Phrase("", new Font(NORMAL))) { Border = 0, HorizontalAlignment = Element.ALIGN_LEFT });
                    tblFooter.AddCell(new PdfPCell(new Phrase("  ", new Font(NORMAL))) { Border = 0, HorizontalAlignment = Element.ALIGN_LEFT });

                    tblFooter.AddCell(new PdfPCell(new Phrase("Amount of tax subject to reverse charges:" + "", new Font(NORMAL))) { Border = 0, HorizontalAlignment = Element.ALIGN_LEFT });
                    tblFooter.AddCell(new PdfPCell(new Phrase("", new Font(NORMAL))) { Border = 0, HorizontalAlignment = Element.ALIGN_LEFT });
                    tblFooter.AddCell(new PdfPCell(new Phrase("", new Font(NORMAL))) { Border = 0, HorizontalAlignment = Element.ALIGN_LEFT });

                    tblFooter.AddCell(new PdfPCell(new Phrase("", new Font(NORMAL))) { Border = 0, HorizontalAlignment = Element.ALIGN_LEFT });
                    tblFooter.AddCell(new PdfPCell(new Phrase("", new Font(NORMAL))) { Border = 0, HorizontalAlignment = Element.ALIGN_LEFT });
                    tblFooter.AddCell(new PdfPCell(new Phrase("  ", new Font(NORMAL))) { Border = 0, HorizontalAlignment = Element.ALIGN_LEFT });

                    tblFooter.AddCell(new PdfPCell(new Phrase("Declaration:", new Font(NORMAL))) { Border = 0, HorizontalAlignment = Element.ALIGN_LEFT });
                    tblFooter.AddCell(new PdfPCell(new Phrase("", new Font(NORMAL))) { Border = 0, HorizontalAlignment = Element.ALIGN_LEFT });
                    tblFooter.AddCell(new PdfPCell(new Phrase("Signature:", new Font(NORMAL))) { Border = 0, HorizontalAlignment = Element.ALIGN_LEFT });

                    tblFooter.AddCell(new PdfPCell(new Phrase("", new Font(NORMAL))) { Border = 0, HorizontalAlignment = Element.ALIGN_LEFT });
                    tblFooter.AddCell(new PdfPCell(new Phrase("", new Font(NORMAL))) { Border = 0, HorizontalAlignment = Element.ALIGN_LEFT });
                    tblFooter.AddCell(new PdfPCell(new Phrase("Name of the ", new Font(NORMAL))) { Border = 0, HorizontalAlignment = Element.ALIGN_LEFT });

                    tblFooter.AddCell(new PdfPCell(new Phrase("", new Font(NORMAL))) { Border = 0, HorizontalAlignment = Element.ALIGN_LEFT });
                    tblFooter.AddCell(new PdfPCell(new Phrase("", new Font(NORMAL))) { Border = 0, HorizontalAlignment = Element.ALIGN_LEFT });
                    tblFooter.AddCell(new PdfPCell(new Phrase("   ", new Font(NORMAL))) { Border = 0, HorizontalAlignment = Element.ALIGN_LEFT });

                    tblFooter.AddCell(new PdfPCell(new Phrase("Signatory:", new Font(NORMAL))) { Border = 0, HorizontalAlignment = Element.ALIGN_LEFT });
                    tblFooter.AddCell(new PdfPCell(new Phrase("", new Font(NORMAL))) { Border = 0, HorizontalAlignment = Element.ALIGN_LEFT });
                    tblFooter.AddCell(new PdfPCell(new Phrase("Designation / Status:", new Font(NORMAL))) { Border = 0, HorizontalAlignment = Element.ALIGN_LEFT });

                    tblFooter.AddCell(new PdfPCell(new Phrase("", new Font(NORMAL))) { Border = 0, HorizontalAlignment = Element.ALIGN_LEFT });
                    tblFooter.AddCell(new PdfPCell(new Phrase("", new Font(NORMAL))) { Border = 0, HorizontalAlignment = Element.ALIGN_LEFT });
                    tblFooter.AddCell(new PdfPCell(new Phrase("   ", new Font(NORMAL))) { Border = 0, HorizontalAlignment = Element.ALIGN_LEFT });            
                    tblFooter.AddCell(new PdfPCell(LableWithValue("Electronic Reference Number:", InvoiceDetails.Invoice.ActualInvoiceNo)) { Border = 0, HorizontalAlignment = Element.ALIGN_LEFT });
                    tblFooter.AddCell(new PdfPCell(new Phrase("", new Font(NORMAL))) { Border = 0, HorizontalAlignment = Element.ALIGN_LEFT });
                    tblFooter.AddCell(new PdfPCell(new Phrase("Date:"+"", new Font(NORMAL))) { Border = 0, HorizontalAlignment = Element.ALIGN_LEFT });              
                    //---------------------------------
             
                    document.Add(tblFooter);
                    //============== Invoice Table Footer Section - end =================//
                                 
                    document.Close();

                    //======== document- end =====//
                }
            }
            catch (Exception ex)
            {
                ApiErrorLogger.WriteAppError(this.GetType().ToString(), System.Reflection.MethodBase.GetCurrentMethod().Name, ex.ToString());
                return false;
            }
            return true;
        }


 /// <summary>
        /// Description :-  Add Lable and Value and return complete Phrase in response
        /// Created by : -Nitin kumar
        /// </summary>
        /// <param name="Title"></param>
        /// <param name="Description"></param>
        /// <returns></returns>
        public static Phrase LableWithValue(string Title,string Description)
        {
            var normalFont = FontFactory.GetFont(FontFactory.TIMES_ROMAN, 8);
            var boldFont = FontFactory.GetFont(FontFactory.TIMES_BOLD, 8);
            var titleChunk = new Chunk(Title+" ", boldFont);
            var descriptionChunk = new Chunk(Description, normalFont);
            var phrase = new Phrase(titleChunk);
            phrase.Add(descriptionChunk);
            return phrase;
        }