private void WriteQuotationLines(PdfPTable pdfTable, QoutationModel qoutationModel) { foreach (QouteLineModel qouteLineModel in qoutationModel.Items) { AddTableCell(pdfTable, qouteLineModel.Code, 10, Font.NORMAL, Rectangle.NO_BORDER); AddTableCell(pdfTable, qouteLineModel.Description, 10, Font.NORMAL, Rectangle.NO_BORDER); AddTableCell(pdfTable, qouteLineModel.Quantity, 10, Font.NORMAL, Rectangle.NO_BORDER); AddTableCell(pdfTable, qouteLineModel.Price, 10, Font.NORMAL, Rectangle.NO_BORDER); AddTableCell(pdfTable, qouteLineModel.TotalExclVat == decimal.MinValue ? "" : qouteLineModel.TotalExclVat.ToString(Constants.MONEY_FORMAT), 10, Font.NORMAL, Rectangle.NO_BORDER); } WriteLine(pdfTable, 5); AddTableCell(pdfTable, "".ToUpper(), 10, Font.NORMAL, Rectangle.NO_BORDER, 3); AddTableCell(pdfTable, "Total Excl", 10, Font.NORMAL, Rectangle.NO_BORDER); AddTableCell(pdfTable, string.Format("R {0}", qoutationModel.TotalExcl.ToString(Constants.MONEY_FORMAT)), 10, Font.NORMAL, Rectangle.NO_BORDER); AddTableCell(pdfTable, "".ToUpper(), 10, Font.NORMAL, Rectangle.NO_BORDER, 3); AddTableCell(pdfTable, "Vat @ 14%", 10, Font.NORMAL, Rectangle.NO_BORDER); AddTableCell(pdfTable, string.Format("R {0}", qoutationModel.TotalVat.ToString(Constants.MONEY_FORMAT)), 10, Font.NORMAL, Rectangle.NO_BORDER); AddTableCell(pdfTable, "".ToUpper(), 10, Font.NORMAL, Rectangle.NO_BORDER, 3); AddTableCell(pdfTable, "Total Incl", 10, Font.NORMAL, Rectangle.NO_BORDER); AddTableCell(pdfTable, string.Format("R {0}", qoutationModel.TotalIncl.ToString(Constants.MONEY_FORMAT)), 10, Font.NORMAL, Rectangle.NO_BORDER); }
private static QoutationModel ConvertToQuotation(XElement quotationXmlElement) { QoutationModel qoutationModel = new QoutationModel { Description = quotationXmlElement.Element("Description").Value, FileName = quotationXmlElement.Element("FileName").Value, QouteDate = quotationXmlElement.Element("QouteDate").Value.StringToDateTime(), Items = (from item in quotationXmlElement.Descendants("Item") select CreateQouteLineModel(item)).ToList() }; qoutationModel.TotalExcl = qoutationModel.Items.Where(q => q.TotalExclVat != decimal.MinValue).Sum(item => item.TotalExclVat); qoutationModel.TotalVat = VatCalculator.GetVatAmount(qoutationModel.TotalExcl); qoutationModel.TotalIncl = VatCalculator.GetAmountInclVat(qoutationModel.TotalExcl); return(qoutationModel); }
public void Write(MemoryStream pdfOutputStream, QoutationModel qoutationModel) { using (Document pdfDocument = new Document(iTextSharp.text.PageSize.A4)) { try { iTextSharp.text.pdf.PdfWriter pdfWriter = iTextSharp.text.pdf.PdfWriter.GetInstance(pdfDocument, pdfOutputStream); pdfDocument.Open(); WritePdfContent(pdfDocument, qoutationModel); pdfWriter.Flush(); pdfWriter.CloseStream = true; } finally { pdfDocument.Close(); } } }
private void WriteQuotationSummary(PdfPTable quotationTable, QoutationModel qoutationModel) { Font cellFont = FontFactory.GetFont("Arial", 18, Font.BOLD, BaseColor.BLACK); PdfPCell pdfPCell = new PdfPCell(new Phrase(qoutationModel.Description.ToUpper(), cellFont)); pdfPCell.PaddingLeft = 10f; pdfPCell.HorizontalAlignment = Rectangle.ALIGN_CENTER; pdfPCell.Colspan = 5; pdfPCell.Border = Rectangle.NO_BORDER; quotationTable.AddCell(pdfPCell); Font pdfPQouteDateCellFont = FontFactory.GetFont("Arial", 11, Font.NORMAL, BaseColor.BLACK); PdfPCell pdfPQouteDateCell = new PdfPCell(new Phrase(string.Format("Date: {0}", DateTime.Now.ToString(Constants.DATE_FORMAT).ToUpper()), pdfPQouteDateCellFont)); pdfPQouteDateCell.PaddingLeft = 10f; pdfPQouteDateCell.PaddingBottom = 30f; pdfPQouteDateCell.HorizontalAlignment = Rectangle.ALIGN_RIGHT; pdfPQouteDateCell.Colspan = 5; pdfPQouteDateCell.Border = Rectangle.NO_BORDER; quotationTable.AddCell(pdfPQouteDateCell); }
private void WritePdfContent(Document pdfDocument, QoutationModel qoutationModel) { PdfPTable companyHeadingTable = new PdfPTable(1); PdfPTable quotationTable = new PdfPTable(5); PdfPTable summaryBoxTable = new PdfPTable(3); PdfPTable notesTable = new PdfPTable(1); List <PdfPTable> documentTables = new List <PdfPTable>(); companyHeadingTable.WidthPercentage = 100f; documentTables.Add(companyHeadingTable); WriteCompanyHeading(companyHeadingTable); WriteLine(companyHeadingTable, 1); quotationTable.SetWidths(new int[] { 1, 3, 1, 1, 1 }); quotationTable.WidthPercentage = 100f; documentTables.Add(quotationTable); WriteQuotation(quotationTable, qoutationModel); summaryBoxTable.SetWidths(new int[] { 2, 1, 1 }); summaryBoxTable.WidthPercentage = 100f; documentTables.Add(summaryBoxTable); WriteSummaryBoxTable(summaryBoxTable); notesTable.WidthPercentage = 100f; documentTables.Add(notesTable); WriteQoutationNotesTable(notesTable); foreach (PdfPTable pdfPTable in documentTables) { pdfDocument.Add(pdfPTable); pdfPTable.FlushContent(); } }
public void Write(string fileName, QoutationModel qoutationModel) { using (FileStream fileStream = new FileStream(fileName, FileMode.Create, FileAccess.Write, FileShare.None)) { using (Document pdfDocument = new Document(iTextSharp.text.PageSize.A4)) { try { iTextSharp.text.pdf.PdfWriter pdfWriter = iTextSharp.text.pdf.PdfWriter.GetInstance(pdfDocument, fileStream); pdfDocument.Open(); WritePdfContent(pdfDocument, qoutationModel); pdfWriter.Flush(); pdfWriter.CloseStream = true; } finally { pdfDocument.Close(); } } } }
private void WriteQuotation(PdfPTable quotationTable, QoutationModel qoutationModel) { WriteQuotationSummary(quotationTable, qoutationModel); WriteQuotationTableHeaders(quotationTable); WriteQuotationLines(quotationTable, qoutationModel); }