public async Task <ActionResult> printLabel([FromBody] printLabelRequest printLabelRequest) { try { var items = await(from o in db.TbtOrder where printLabelRequest.DocNums.Contains(o.DocNum) select o).ToListAsync(); List <LabelItem> labelItems = new List <LabelItem>(); items.ForEach(x => { LabelItem l = new LabelItem { Dscription = x.Dscription, Quantity = x.Quantity, }; labelItems.Add(l); }); LabelDocumentModel labelDocumentModel = new LabelDocumentModel { Address = items.FirstOrDefault().Address, CardName = items.FirstOrDefault().CardName, DocDate = items.FirstOrDefault().DocDate, DocDueDate = items.FirstOrDefault().DocDueDate, DocNum = string.Join(",", printLabelRequest.DocNums.ToArray()), labelItems = labelItems, Remark = items.FirstOrDefault().Remark }; LabelDocument pDoc = new LabelDocument(this._hostingEnvironment); Stream resultPDFStream = pDoc.CreatePDF(labelDocumentModel); resultPDFStream.Position = 0; if (resultPDFStream.Length != 0) { FileStreamResult fileStreamResult = new FileStreamResult(resultPDFStream, "application/pdf"); fileStreamResult.FileDownloadName = "label_" + "" + ".pdf"; return(fileStreamResult); } else { return(NotFound()); } } catch (Exception ex) { return(StatusCode(500, ex)); } }
public Stream CreatePDF(LabelDocumentModel labelDocumentModel) { System.IO.MemoryStream memoryStream = new System.IO.MemoryStream(); Document document = this._document; PdfWriter writer = PdfWriter.GetInstance(document, memoryStream); document.Open(); float[] widthBoxs = new float[] { 75f, 20f }; PdfPTable tableBox = new PdfPTable(widthBoxs.Count()); tableBox.SetWidths(widthBoxs); tableBox.WidthPercentage = 95f; PdfPTable tableTopLeft = new PdfPTable(1); tableTopLeft.WidthPercentage = 90f; tableTopLeft.AddCell(bulidColumnTitleBox(@"ผู้รับเงิน", 18, 1, Element.ALIGN_LEFT, 0)); tableTopLeft.AddCell(bulidColumnTitleBox(" " + labelDocumentModel.CardName, 16, 1, Element.ALIGN_LEFT, 0)); tableTopLeft.AddCell(bulidColumnTitleBox(" " + labelDocumentModel.Address, 16, 1, Element.ALIGN_LEFT, 0)); tableTopLeft.AddCell(bulidColumnTitleBox(" " + @"โทรศัพท์", 16, 1, Element.ALIGN_LEFT, 0)); PdfPTable tableTopRight = new PdfPTable(1); tableTopRight.WidthPercentage = 90f; tableTopRight.AddCell(bulidColumnTitleBox(@"จำนวน", 18, 1, Element.ALIGN_CENTER, 1)); tableTopRight.AddCell(bulidColumnTitleBox(@"1", 30, 1, Element.ALIGN_CENTER, 1)); tableTopRight.AddCell(bulidColumnTitleBox(@"1", 30, 1, Element.ALIGN_CENTER, 1)); PdfPCell cellLeft = new PdfPCell(tableTopLeft); tableBox.AddCell(cellLeft); PdfPCell cellRight = new PdfPCell(tableTopRight); tableBox.AddCell(cellRight); document.Add(tableBox); //------------------------------------------------------ float[] widths = new float[] { 20f, 70f }; PdfPTable tableDetail = new PdfPTable(widths.Count()); tableDetail.WidthPercentage = 90f; tableDetail.SetWidths(widths); tableDetail.AddCell(bulidColumnDetail(@"PO", 16)); tableDetail.AddCell(bulidColumnDetail(@"", 14)); tableDetail.AddCell(bulidColumnDetail(@"ใบเสร็จ", 16)); tableDetail.AddCell(bulidColumnDetail(labelDocumentModel.DocNum, 14)); tableDetail.AddCell(bulidColumnDetail(@"วันที่ออกใบเสร็จ", 16)); tableDetail.AddCell(bulidColumnDetail(labelDocumentModel.DocDate == null ? "" : labelDocumentModel.DocDate.Value.ToString("dd/MM/yyyy"), 14)); tableDetail.AddCell(bulidColumnDetail(@"วันที่ส่งสินค้า", 16)); tableDetail.AddCell(bulidColumnDetail(labelDocumentModel.DocDueDate == null ? "" : labelDocumentModel.DocDueDate.Value.ToString("dd/MM/yyyy"), 14)); tableDetail.AddCell(bulidColumnDetail(@"คำสั่งพิเศษ(ระบุ)", 16)); tableDetail.AddCell(bulidColumnDetail(labelDocumentModel.Remark, 14)); document.Add(tableDetail); //------------------------------------------------------ float[] Itemwidths = new float[] { 10f, 75f, 10f }; string[] headers = new string[] { "No.", "รายการ", "จำนวน" }; PdfPTable tableItem = new PdfPTable(Itemwidths.Count()); tableItem.WidthPercentage = 95f; tableItem.SetWidths(Itemwidths); tableItem.HeaderRows = 2; tableItem.AddCell(bulidTextDeteail(@"โปรดตรวจสอบสินค้าทันที หากไม่ถูกต้องกรุณาแจ้งบริษัทภายใน 15 วัน", 22, headers.Count())); foreach (string h in headers) { tableItem.AddCell(bulidColumnHeader(h, 16)); } int no = 1; foreach (var i in labelDocumentModel.labelItems) { bool isLast = false; if (no == labelDocumentModel.labelItems.Count()) { isLast = true; } tableItem.AddCell(bulidColumnRows(no.ToString(), 14, Element.ALIGN_CENTER, isLast)); tableItem.AddCell(bulidColumnRows(i.Dscription, 14, Element.ALIGN_LEFT, isLast)); tableItem.AddCell(bulidColumnRows(i.Quantity.ToString(), 14, Element.ALIGN_CENTER, isLast)); no++; } document.Add(tableItem); document.Close(); return(memoryStream); }