public async Task <ActionResult> printInvoice([FromBody] printInvoiceRequest printInvoiceRequest) { try { var items = await(from o in db.TbtOrder where o.DocNum == printInvoiceRequest.DocNum join g in db.TbmItemGroup on o.ItemCode.Trim().Substring(0, 1) equals g.ItemGrpPrefix.Trim() select new { o, g }).ToListAsync(); List <InvoiceItem> InvoiceItems = new List <InvoiceItem>(); items.ForEach(x => { InvoiceItem l = new InvoiceItem { Dscription = x.o.Dscription, ItemCode = x.o.ItemCode, Price = (double)x.o.Price, Qty = (double)x.o.Quantity, ItemGrpCode = x.g.ItemGrpCode, ItemGrpName = x.g.ItemGrpName }; InvoiceItems.Add(l); }); InvoiceDocumentModel invoiceDocumentModel = new InvoiceDocumentModel { Address = items.FirstOrDefault().o.Address, CardName = items.FirstOrDefault().o.CardName, CardCode = items.FirstOrDefault().o.CardCode.ToString(), DocDate = items.FirstOrDefault().o.DocDate, DocDueDate = items.FirstOrDefault().o.DocDueDate, DocNum = printInvoiceRequest.DocNum, invoiceitems = InvoiceItems, Remark = items.FirstOrDefault().o.Remark, County = items.FirstOrDefault().o.County }; InvoiceDocument pDoc = new InvoiceDocument(this._hostingEnvironment); Stream resultPDFStream = pDoc.CreatePDF(invoiceDocumentModel); resultPDFStream.Position = 0; if (resultPDFStream.Length != 0) { FileStreamResult fileStreamResult = new FileStreamResult(resultPDFStream, "application/pdf"); fileStreamResult.FileDownloadName = "Invoice_" + "" + ".pdf"; return(fileStreamResult); } else { return(NotFound()); } } catch (Exception ex) { return(StatusCode(500, ex)); } }
public Stream CreatePDF(InvoiceDocumentModel invoiceDocumentModel) { System.IO.MemoryStream memoryStream = new System.IO.MemoryStream(); Document document = this._document; PdfWriter writer = PdfWriter.GetInstance(document, memoryStream); document.Open(); PdfPTable table = new PdfPTable(1); table.WidthPercentage = 95f; table.HeaderRows = 1; //table.FooterRows = 2; PdfPTable tabletitle = new PdfPTable(4); tabletitle.AddCell(bulidColumnDetail("", 10, 1, Element.ALIGN_CENTER)); tabletitle.AddCell(bulidColumnDetail("", 10, 1, Element.ALIGN_LEFT)); tabletitle.AddCell(bulidColumnDetail("", 10, 1, Element.ALIGN_CENTER)); tabletitle.AddCell(bulidColumnDetail(invoiceDocumentModel.County, 10, 1, Element.ALIGN_LEFT)); tabletitle.AddCell(bulidColumnDetail("", 10, 1, Element.ALIGN_CENTER)); tabletitle.AddCell(bulidColumnDetail(invoiceDocumentModel.CardCode + " เลขประจำตัวผู้เสียภาษี", 10, 1, Element.ALIGN_LEFT)); tabletitle.AddCell(bulidColumnDetail("", 10, 1, Element.ALIGN_CENTER)); tabletitle.AddCell(bulidColumnDetail("", 10, 1, Element.ALIGN_CENTER)); tabletitle.AddCell(bulidColumnDetail("", 10, 1, Element.ALIGN_CENTER)); tabletitle.AddCell(bulidColumnDetail(invoiceDocumentModel.CardName, 10, 1, Element.ALIGN_LEFT)); tabletitle.AddCell(bulidColumnDetail("", 10, 1, Element.ALIGN_CENTER)); tabletitle.AddCell(bulidColumnDetail(invoiceDocumentModel.DocDate.Value.ToString("dd/MM/yyyy"), 10, 1, Element.ALIGN_LEFT)); tabletitle.AddCell(bulidColumnDetail("", 10, 1, Element.ALIGN_CENTER)); tabletitle.AddCell(bulidColumnDetail(invoiceDocumentModel.Address, 10, 1, Element.ALIGN_LEFT, 2)); tabletitle.AddCell(bulidColumnDetail("", 10, 1, Element.ALIGN_CENTER)); tabletitle.AddCell(bulidColumnDetail("", 10, 1, Element.ALIGN_CENTER)); tabletitle.AddCell(bulidColumnDetail("", 10, 1, Element.ALIGN_CENTER)); tabletitle.AddCell(bulidColumnDetail("", 10, 1, Element.ALIGN_CENTER)); tabletitle.AddCell(bulidColumnDetail(invoiceDocumentModel.DocDueDate.Value.ToString("dd/MM/yyyy"), 10, 1, Element.ALIGN_LEFT)); tabletitle.AddCell(bulidColumnDetail("", 10, 1, Element.ALIGN_CENTER)); tabletitle.AddCell(bulidColumnDetail("", 10, 1, Element.ALIGN_CENTER)); tabletitle.AddCell(bulidColumnDetail("", 10, 1, Element.ALIGN_CENTER)); tabletitle.AddCell(bulidColumnDetail("ขายส่ง", 10, 1, Element.ALIGN_LEFT)); tabletitle.AddCell(bulidColumnDetail("", 10, 1, Element.ALIGN_CENTER)); tabletitle.AddCell(bulidColumnDetail(invoiceDocumentModel.Address, 10, 1, Element.ALIGN_LEFT, 2)); tabletitle.AddCell(bulidColumnDetail("", 10, 1, Element.ALIGN_CENTER)); tabletitle.AddCell(bulidColumnDetail("60 วัน", 10, 1, Element.ALIGN_LEFT)); tabletitle.AddCell(bulidColumnDetail("", 10, 1, Element.ALIGN_CENTER)); tabletitle.AddCell(bulidColumnDetail("", 10, 1, Element.ALIGN_CENTER)); tabletitle.AddCell(bulidColumnDetail(invoiceDocumentModel.DocDueDate.Value.ToString("dd/MM/yyyy"), 10, 1, Element.ALIGN_LEFT)); tabletitle.AddCell(bulidColumnDetail("", 10, 1, Element.ALIGN_CENTER)); tabletitle.AddCell(bulidColumnDetail("", 10, 1, Element.ALIGN_CENTER)); tabletitle.AddCell(bulidColumnDetail("", 10, 1, Element.ALIGN_CENTER)); tabletitle.AddCell(bulidColumnDetail("", 10, 1, Element.ALIGN_CENTER)); table.AddCell(tabletitle); int count = 1; float[] widthBoxs = new float[] { 7f, 15F, 47F, 7f, 7f, 7f, 10f }; PdfPTable tableDetail = new PdfPTable(widthBoxs.Count()); tableDetail.WidthPercentage = 95f; foreach (var item in invoiceDocumentModel.invoiceitems) { tableDetail.AddCell(bulidColumnDetail(count + ":" + item.ItemGrpCode, 10, 1, Element.ALIGN_CENTER)); tableDetail.AddCell(bulidColumnDetail(item.ItemCode, 10, 1, Element.ALIGN_CENTER)); tableDetail.AddCell(bulidColumnDetail(item.Dscription, 10, 1, Element.ALIGN_LEFT)); tableDetail.AddCell(bulidColumnDetail(item.Qty.ToString(), 10, 1, Element.ALIGN_RIGHT)); tableDetail.AddCell(bulidColumnDetail(item.Price.ToString(), 10, 1, Element.ALIGN_RIGHT)); tableDetail.AddCell(bulidColumnDetail("%", 10, 1, Element.ALIGN_CENTER)); tableDetail.AddCell(bulidColumnDetail((item.Qty * item.Price).ToString(), 10, 1, Element.ALIGN_RIGHT)); if (count == 12) { tableDetail.AddCell(bulidColumnDetail("", 10, 1, Element.ALIGN_CENTER)); tableDetail.AddCell(bulidColumnDetail("", 10, 1, Element.ALIGN_CENTER)); tableDetail.AddCell(bulidColumnDetail(NumberToText.ThaiBahtText(invoiceDocumentModel.invoiceitems.Select(x => x.Qty).Sum().ToString()), 10, 1, Element.ALIGN_LEFT)); tableDetail.AddCell(bulidColumnDetail(invoiceDocumentModel.invoiceitems.Select(x => x.Qty).Sum().ToString(), 10, 1, Element.ALIGN_RIGHT)); tableDetail.AddCell(bulidColumnDetail("", 10, 2, Element.ALIGN_CENTER)); tableDetail.AddCell(bulidColumnDetail(invoiceDocumentModel.invoiceitems.Select(x => x.Qty * x.Price).Sum().ToString("n2"), 10, 1, Element.ALIGN_RIGHT)); tableDetail.AddCell(bulidColumnDetail("", 10, 1, Element.ALIGN_CENTER)); tableDetail.AddCell(bulidColumnDetail(invoiceDocumentModel.Remark, 10, 3, Element.ALIGN_LEFT, 2)); tableDetail.AddCell(bulidColumnDetail("", 10, 2, Element.ALIGN_CENTER)); tableDetail.AddCell(bulidColumnDetail("", 10, 1, Element.ALIGN_CENTER)); tableDetail.AddCell(bulidColumnDetail("", 10, 1, Element.ALIGN_CENTER)); tableDetail.AddCell(bulidColumnDetail("", 10, 2, Element.ALIGN_CENTER)); tableDetail.AddCell(bulidColumnDetail(invoiceDocumentModel.invoiceitems.Select(x => x.Qty * x.Price).Sum().ToString("n2"), 10, 1, Element.ALIGN_RIGHT)); tableDetail.AddCell(bulidColumnDetail("", 10, 1, Element.ALIGN_CENTER)); tableDetail.AddCell(bulidColumnDetail("", 10, 1, Element.ALIGN_CENTER)); tableDetail.AddCell(bulidColumnDetail("", 10, 1, Element.ALIGN_CENTER)); tableDetail.AddCell(bulidColumnDetail("", 10, 1, Element.ALIGN_CENTER)); tableDetail.AddCell(bulidColumnFooster(3, Element.ALIGN_RIGHT)); table.AddCell(tableDetail); document.NewPage(); document.Add(table); tableDetail = new PdfPTable(widthBoxs.Count()); tableDetail.WidthPercentage = 95f; count = 0; } count++; } //PdfPTable tablefooster = new PdfPTable(widthBoxs.Count()); //tablefooster.WidthPercentage = 95f; document.Close(); return(memoryStream); }