public PrintBill(ObservableCollection <printBillData> finalBillOrderPrint, string name, string total) { PdfDocument doc = new PdfDocument(); PdfPage page = doc.Pages.Add(); PdfGraphics graphics = page.Graphics; PdfFont font = new PdfStandardFont(PdfFontFamily.TimesRoman, 20); PdfFont font2 = new PdfStandardFont(PdfFontFamily.TimesRoman, 10); PdfFont font3 = new PdfStandardFont(PdfFontFamily.Courier, 7); PdfPen pen = new PdfPen(System.Drawing.Color.Black); graphics.DrawString("High on Flavours", font, PdfBrushes.Black, new PointF(190, 0)); graphics.DrawString("experience India ...", font2, PdfBrushes.Black, new PointF(300, 20)); graphics.DrawString("Bonhoefferstraße 4/1, 69123 Heidelberg", font3, PdfBrushes.Black, new PointF(185, 40)); graphics.DrawString("Ph no: +49 12345678910 Email: [email protected]", font3, PdfBrushes.Black, new PointF(150, 50)); graphics.DrawLine(pen, new PointF(0, 60), new PointF(950, 60)); graphics.DrawLine(pen, new PointF(0, page.Graphics.ClientSize.Height - 100), new PointF(950, page.Graphics.ClientSize.Height - 100)); graphics.DrawString("Total: " + total + " EURO", font2, PdfBrushes.Black, new PointF(400, page.Graphics.ClientSize.Height - 80)); PdfGrid grid = new PdfGrid(); grid.DataSource = finalBillOrderPrint; PdfGridLayoutFormat layoutFormat = new PdfGridLayoutFormat(); layoutFormat.Layout = PdfLayoutType.OnePage; PdfGridLayoutResult gridResult = grid.Draw(page, new RectangleF(new PointF(0, 75), new SizeF(page.Graphics.ClientSize.Width, page.Graphics.ClientSize.Height - 100)), layoutFormat); doc.Save(name + ".pdf"); System.Diagnostics.Process.Start(name + ".pdf"); doc.Close(true); }
private void OnButtonClick(object sender, RoutedEventArgs e) { //Create a new PDF document PdfDocument doc = new PdfDocument(); //Add a new PDF page PdfPage page = doc.Pages.Add(); // Create PDF graphics for a page PdfGraphics graphics = page.Graphics; //Set the standard font PdfFont font = new PdfStandardFont(PdfFontFamily.TimesRoman, 20); PdfFont font2 = new PdfStandardFont(PdfFontFamily.TimesRoman, 10); PdfFont font3 = new PdfStandardFont(PdfFontFamily.Courier, 7); PdfPen pen = new PdfPen(System.Drawing.Color.Black); //Draw the text graphics.DrawString("High on Flavours", font, PdfBrushes.Black, new PointF(190, 0)); graphics.DrawString("experience India ...", font2, PdfBrushes.Black, new PointF(300, 20)); graphics.DrawString("Bonhoefferstraße 4/1, 69123 Heidelberg", font3, PdfBrushes.Black, new PointF(185, 40)); graphics.DrawString("Ph no: +49 12345678910 Email: [email protected]", font3, PdfBrushes.Black, new PointF(150, 50)); graphics.DrawLine(pen, new PointF(0, 60), new PointF(950, 60)); graphics.DrawLine(pen, new PointF(0, page.Graphics.ClientSize.Height - 100), new PointF(950, page.Graphics.ClientSize.Height - 100)); graphics.DrawString("Total:", font2, PdfBrushes.Black, new PointF(400, page.Graphics.ClientSize.Height - 80)); //Create a new PDF grid PdfGrid grid = new PdfGrid(); //Add the data source grid.DataSource = finalBillOrder; //Apply built-in grid style //grid.ApplyBuiltinStyle(PdfGridBuiltinStyle.GridTable6Colorful); //Creates the layout format for grid PdfGridLayoutFormat layoutFormat = new PdfGridLayoutFormat(); //Set the layout type as paginate layoutFormat.Layout = PdfLayoutType.OnePage; //Draws the grid to the PDF page PdfGridLayoutResult gridResult = grid.Draw(page, new RectangleF(new PointF(0, 75), new SizeF(page.Graphics.ClientSize.Width, page.Graphics.ClientSize.Height - 100)), layoutFormat); //Save the PDF stream to physical file doc.Save("outputGRD.pdf"); System.Diagnostics.Process.Start("outputGRD.pdf"); doc.Close(true); }
/// <summary> /// Creates PDF /// </summary> public void CreatePDF(IList <InvoiceItem> dataSource, BillingInformation billInfo, double totalDue) { PdfDocument document = new PdfDocument(); document.PageSettings.Orientation = PdfPageOrientation.Portrait; document.PageSettings.Margins.All = 50; PdfPage page = document.Pages.Add(); PdfGraphics g = page.Graphics; PdfTextElement element = new PdfTextElement(@"Syncfusion Software 2501 Aerial Center Parkway Suite 200 Morrisville, NC 27560 USA Tel +1 888.936.8638 Fax +1 919.573.0306"); element.Font = new PdfStandardFont(PdfFontFamily.TimesRoman, 12); element.Brush = new PdfSolidBrush(new PdfColor(0, 0, 0)); PdfLayoutResult result = element.Draw(page, new RectangleF(0, 0, page.Graphics.ClientSize.Width / 2, 200)); Assembly assembly = typeof(MainPage).Assembly; Stream imgStream = assembly.GetManifestResourceStream("Invoice.Assets.SyncfusionLogo.jpg"); PdfImage img = PdfImage.FromStream(imgStream); page.Graphics.DrawImage(img, new RectangleF(g.ClientSize.Width - 200, result.Bounds.Y, 190, 45)); PdfFont subHeadingFont = new PdfStandardFont(PdfFontFamily.TimesRoman, 14); g.DrawRectangle(new PdfSolidBrush(new PdfColor(34, 83, 142)), new RectangleF(0, result.Bounds.Bottom + 40, g.ClientSize.Width, 30)); element = new PdfTextElement("INVOICE " + billInfo.InvoiceNumber.ToString(), subHeadingFont); element.Brush = PdfBrushes.White; result = element.Draw(page, new PointF(10, result.Bounds.Bottom + 48)); string currentDate = "DATE " + billInfo.Date.ToString("d"); SizeF textSize = subHeadingFont.MeasureString(currentDate); g.DrawString(currentDate, subHeadingFont, element.Brush, new PointF(g.ClientSize.Width - textSize.Width - 10, result.Bounds.Y)); element = new PdfTextElement("BILL TO ", new PdfStandardFont(PdfFontFamily.TimesRoman, 12)); element.Brush = new PdfSolidBrush(new PdfColor(34, 83, 142)); result = element.Draw(page, new PointF(10, result.Bounds.Bottom + 25)); g.DrawLine(new PdfPen(new PdfColor(34, 83, 142), 0.70f), new PointF(0, result.Bounds.Bottom + 3), new PointF(g.ClientSize.Width, result.Bounds.Bottom + 3)); element = new PdfTextElement(billInfo.Name, new PdfStandardFont(PdfFontFamily.TimesRoman, 11)); element.Brush = new PdfSolidBrush(new PdfColor(0, 0, 0)); result = element.Draw(page, new RectangleF(10, result.Bounds.Bottom + 5, g.ClientSize.Width / 2, 100)); element = new PdfTextElement(billInfo.Address, new PdfStandardFont(PdfFontFamily.TimesRoman, 11)); element.Brush = new PdfSolidBrush(new PdfColor(0, 0, 0)); result = element.Draw(page, new RectangleF(10, result.Bounds.Bottom + 3, g.ClientSize.Width / 2, 100)); PdfGrid grid = new PdfGrid(); grid.DataSource = ConvertToDataTable(dataSource); PdfGridCellStyle cellStyle = new PdfGridCellStyle(); cellStyle.Borders.All = PdfPens.White; PdfGridRow header = grid.Headers[0]; PdfGridCellStyle headerStyle = new PdfGridCellStyle(); headerStyle.Borders.All = new PdfPen(new PdfColor(34, 83, 142)); headerStyle.BackgroundBrush = new PdfSolidBrush(new PdfColor(34, 83, 142)); headerStyle.TextBrush = PdfBrushes.White; headerStyle.Font = new PdfStandardFont(PdfFontFamily.TimesRoman, 12f, PdfFontStyle.Regular); for (int i = 0; i < header.Cells.Count; i++) { if (i == 0) { header.Cells[i].StringFormat = new PdfStringFormat(PdfTextAlignment.Left, PdfVerticalAlignment.Middle); } else { header.Cells[i].StringFormat = new PdfStringFormat(PdfTextAlignment.Right, PdfVerticalAlignment.Middle); } } header.Cells[0].Value = "ITEM"; header.Cells[1].Value = "QUANTITY"; header.Cells[2].Value = "RATE"; header.Cells[3].Value = "TAXES"; header.Cells[4].Value = "AMOUNT"; header.ApplyStyle(headerStyle); grid.Columns[0].Width = 180; cellStyle.Borders.Bottom = new PdfPen(new PdfColor(34, 83, 142), 0.70f); cellStyle.Font = new PdfStandardFont(PdfFontFamily.TimesRoman, 11f); cellStyle.TextBrush = new PdfSolidBrush(new PdfColor(0, 0, 0)); foreach (PdfGridRow row in grid.Rows) { row.ApplyStyle(cellStyle); for (int i = 0; i < row.Cells.Count; i++) { PdfGridCell cell = row.Cells[i]; if (i == 0) { cell.StringFormat = new PdfStringFormat(PdfTextAlignment.Left, PdfVerticalAlignment.Middle); } else { cell.StringFormat = new PdfStringFormat(PdfTextAlignment.Right, PdfVerticalAlignment.Middle); } if (i > 1) { if (cell.Value.ToString().Contains("$")) { cell.Value = cell.Value.ToString(); } else { if (cell.Value is double) { cell.Value = "$" + ((double)cell.Value).ToString("#,###.00", CultureInfo.InvariantCulture); } else { cell.Value = "$" + cell.Value.ToString(); } } } } } PdfGridLayoutFormat layoutFormat = new PdfGridLayoutFormat(); layoutFormat.Layout = PdfLayoutType.Paginate; PdfGridLayoutResult gridResult = grid.Draw(page, new RectangleF(new PointF(0, result.Bounds.Bottom + 40), new SizeF(g.ClientSize.Width, g.ClientSize.Height - 100)), layoutFormat); float pos = 0.0f; for (int i = 0; i < grid.Columns.Count - 1; i++) { pos += grid.Columns[i].Width; } PdfFont font = new PdfStandardFont(PdfFontFamily.TimesRoman, 12f, PdfFontStyle.Bold); gridResult.Page.Graphics.DrawString("TOTAL DUE", font, new PdfSolidBrush(new PdfColor(34, 83, 142)), new RectangleF(new PointF(pos, gridResult.Bounds.Bottom + 10), new SizeF(grid.Columns[3].Width - pos, 20)), new PdfStringFormat(PdfTextAlignment.Right)); gridResult.Page.Graphics.DrawString("Thank you for your business!", new PdfStandardFont(PdfFontFamily.TimesRoman, 12), new PdfSolidBrush(new PdfColor(0, 0, 0)), new PointF(pos - 210, gridResult.Bounds.Bottom + 60)); pos += grid.Columns[4].Width; gridResult.Page.Graphics.DrawString("$" + totalDue.ToString("#,###.00", CultureInfo.InvariantCulture), font, new PdfSolidBrush(new PdfColor(0, 0, 0)), new RectangleF(pos, gridResult.Bounds.Bottom + 10, grid.Columns[4].Width - pos, 20), new PdfStringFormat(PdfTextAlignment.Right)); document.Save("Invoice.pdf"); //Message box confirmation to view the created PDF document. if (MessageBox.Show("Do you want to view the PDF file?", "PDF File Created", MessageBoxButton.YesNo, MessageBoxImage.Information) == MessageBoxResult.Yes) { //Launching the PDF file using the default Application.[Acrobat Reader] System.Diagnostics.Process.Start("Invoice.pdf"); //this.Close(); } //else // Exit //this.Close(); document.Close(true); }
/// <summary> /// Create ZugFerd Invoice Pdf /// </summary> /// <param name="document"></param> /// <returns></returns> public PdfDocument CreateZugFerdInvoicePDF(PdfDocument document) { //Add page to the PDF PdfPage page = document.Pages.Add(); PdfGraphics graphics = page.Graphics; //Create border color PdfColor borderColor = Syncfusion.Drawing.Color.FromArgb(255, 142, 170, 219); //Get the page width and height float pageWidth = page.GetClientSize().Width; float pageHeight = page.GetClientSize().Height; //Set the header height float headerHeight = 90; PdfColor lightBlue = Syncfusion.Drawing.Color.FromArgb(255, 91, 126, 215); PdfBrush lightBlueBrush = new PdfSolidBrush(lightBlue); PdfColor darkBlue = Syncfusion.Drawing.Color.FromArgb(255, 65, 104, 209); PdfBrush darkBlueBrush = new PdfSolidBrush(darkBlue); PdfBrush whiteBrush = new PdfSolidBrush(Syncfusion.Drawing.Color.FromArgb(255, 255, 255, 255)); #if COMMONSB Stream fontStream = typeof(ZugFerd).GetTypeInfo().Assembly.GetManifestResourceStream("SampleBrowser.Samples.PDF.Samples.Assets.arial.ttf"); #else Stream fontStream = typeof(ZugFerd).GetTypeInfo().Assembly.GetManifestResourceStream("SampleBrowser.PDF.Samples.Assets.arial.ttf"); #endif PdfTrueTypeFont headerFont = new PdfTrueTypeFont(fontStream, 30, PdfFontStyle.Regular); PdfTrueTypeFont arialRegularFont = new PdfTrueTypeFont(fontStream, 18, PdfFontStyle.Regular); PdfTrueTypeFont arialBoldFont = new PdfTrueTypeFont(fontStream, 9, PdfFontStyle.Bold); //Create string format. PdfStringFormat format = new PdfStringFormat(); format.Alignment = PdfTextAlignment.Center; format.LineAlignment = PdfVerticalAlignment.Middle; float y = 0; float x = 0; //Set the margins of address. float margin = 30; //Set the line space float lineSpace = 7; PdfPen borderPen = new PdfPen(borderColor, 1f); //Draw page border graphics.DrawRectangle(borderPen, new RectangleF(0, 0, pageWidth, pageHeight)); PdfGrid grid = new PdfGrid(); grid.DataSource = GetProductReport(); #region Header //Fill the header with light Brush graphics.DrawRectangle(lightBlueBrush, new RectangleF(0, 0, pageWidth, headerHeight)); string title = "INVOICE"; SizeF textSize = headerFont.MeasureString(title); RectangleF headerTotalBounds = new RectangleF(400, 0, pageWidth - 400, headerHeight); graphics.DrawString(title, headerFont, whiteBrush, new RectangleF(0, 0, textSize.Width + 50, headerHeight), format); graphics.DrawRectangle(darkBlueBrush, headerTotalBounds); graphics.DrawString("$" + GetTotalAmount(grid).ToString(), arialRegularFont, whiteBrush, new RectangleF(400, 0, pageWidth - 400, headerHeight + 10), format); arialRegularFont = new PdfTrueTypeFont(fontStream, 9, PdfFontStyle.Regular); format.LineAlignment = PdfVerticalAlignment.Bottom; graphics.DrawString("Amount", arialRegularFont, whiteBrush, new RectangleF(400, 0, pageWidth - 400, headerHeight / 2 - arialRegularFont.Height), format); #endregion SizeF size = arialRegularFont.MeasureString("Invoice Number: 2058557939"); y = headerHeight + margin; x = (pageWidth - margin) - size.Width; graphics.DrawString("Invoice Number: 2058557939", arialRegularFont, PdfBrushes.Black, new PointF(x, y)); size = arialRegularFont.MeasureString("Date :" + DateTime.Now.ToString("dddd dd, MMMM yyyy")); x = (pageWidth - margin) - size.Width; y += arialRegularFont.Height + lineSpace; graphics.DrawString("Date: " + DateTime.Now.ToString("dddd dd, MMMM yyyy"), arialRegularFont, PdfBrushes.Black, new PointF(x, y)); y = headerHeight + margin; x = margin; graphics.DrawString("Bill To:", arialRegularFont, PdfBrushes.Black, new PointF(x, y)); y += arialRegularFont.Height + lineSpace; graphics.DrawString("Abraham Swearegin,", arialRegularFont, PdfBrushes.Black, new PointF(x, y)); y += arialRegularFont.Height + lineSpace; graphics.DrawString("United States, California, San Mateo,", arialRegularFont, PdfBrushes.Black, new PointF(x, y)); y += arialRegularFont.Height + lineSpace; graphics.DrawString("9920 BridgePointe Parkway,", arialRegularFont, PdfBrushes.Black, new PointF(x, y)); y += arialRegularFont.Height + lineSpace; graphics.DrawString("9365550136", arialRegularFont, PdfBrushes.Black, new PointF(x, y)); #region Grid grid.Columns[0].Width = 110; grid.Columns[1].Width = 150; grid.Columns[2].Width = 110; grid.Columns[3].Width = 70; grid.Columns[4].Width = 100; for (int i = 0; i < grid.Headers.Count; i++) { grid.Headers[i].Height = 20; for (int j = 0; j < grid.Columns.Count; j++) { PdfStringFormat pdfStringFormat = new PdfStringFormat(); pdfStringFormat.LineAlignment = PdfVerticalAlignment.Middle; pdfStringFormat.Alignment = PdfTextAlignment.Left; if (j == 0 || j == 2) { grid.Headers[i].Cells[j].Style.CellPadding = new PdfPaddings(30, 1, 1, 1); } grid.Headers[i].Cells[j].StringFormat = pdfStringFormat; grid.Headers[i].Cells[j].Style.Font = arialBoldFont; } grid.Headers[0].Cells[0].Value = "Product Id"; } for (int i = 0; i < grid.Rows.Count; i++) { grid.Rows[i].Height = 23; for (int j = 0; j < grid.Columns.Count; j++) { PdfStringFormat pdfStringFormat = new PdfStringFormat(); pdfStringFormat.LineAlignment = PdfVerticalAlignment.Middle; pdfStringFormat.Alignment = PdfTextAlignment.Left; if (j == 0 || j == 2) { grid.Rows[i].Cells[j].Style.CellPadding = new PdfPaddings(30, 1, 1, 1); } grid.Rows[i].Cells[j].StringFormat = pdfStringFormat; grid.Rows[i].Cells[j].Style.Font = arialRegularFont; } } grid.ApplyBuiltinStyle(PdfGridBuiltinStyle.ListTable4Accent5); grid.BeginCellLayout += Grid_BeginCellLayout; PdfGridLayoutResult result = grid.Draw(page, new PointF(0, y + 40)); y = result.Bounds.Bottom + lineSpace; format = new PdfStringFormat(); format.Alignment = PdfTextAlignment.Center; RectangleF bounds = new RectangleF(QuantityCellBounds.X, y, QuantityCellBounds.Width, QuantityCellBounds.Height); page.Graphics.DrawString("Grand Total:", arialBoldFont, PdfBrushes.Black, bounds, format); bounds = new RectangleF(TotalPriceCellBounds.X, y, TotalPriceCellBounds.Width, TotalPriceCellBounds.Height); page.Graphics.DrawString(GetTotalAmount(grid).ToString(), arialBoldFont, PdfBrushes.Black, bounds); #endregion borderPen.DashStyle = PdfDashStyle.Custom; borderPen.DashPattern = new float[] { 3, 3 }; graphics.DrawLine(borderPen, new PointF(0, pageHeight - 100), new PointF(pageWidth, pageHeight - 100)); y = pageHeight - 100 + margin; size = arialRegularFont.MeasureString("800 Interchange Blvd."); x = pageWidth - size.Width - margin; graphics.DrawString("800 Interchange Blvd.", arialRegularFont, PdfBrushes.Black, new PointF(x, y)); y += arialRegularFont.Height + lineSpace; size = arialRegularFont.MeasureString("Suite 2501, Austin, TX 78721"); x = pageWidth - size.Width - margin; graphics.DrawString("Suite 2501, Austin, TX 78721", arialRegularFont, PdfBrushes.Black, new PointF(x, y)); y += arialRegularFont.Height + lineSpace; size = arialRegularFont.MeasureString("Any Questions? [email protected]"); x = pageWidth - size.Width - margin; graphics.DrawString("Any Questions? [email protected]", arialRegularFont, PdfBrushes.Black, new PointF(x, y)); return(document); }
private async void GeneratePDF_Click(object sender, RoutedEventArgs e) { total = 0; string id = this.OrderIdList.SelectedValue.ToString(); IEnumerable <CustOrders> products = Orders.GetProducts(id); List <CustOrders> list = new List <CustOrders>(); foreach (CustOrders cust in products) { list.Add(cust); } var reducedList = list.Select(f => new { f.ProductID, f.ProductName, f.Quantity, f.UnitPrice, f.Discount, f.Price }).ToList(); IEnumerable <ShipDetails> shipDetails = Orders.GetShipDetails(); PdfDocument document = new PdfDocument(); document.PageSettings.Orientation = PdfPageOrientation.Landscape; document.PageSettings.Margins.All = 50; PdfPage page = document.Pages.Add(); PdfGraphics g = page.Graphics; PdfTextElement element = new PdfTextElement("Northwind Traders\n67, rue des Cinquante Otages,\nElgin,\nUnites States."); element.Font = new PdfStandardFont(PdfFontFamily.TimesRoman, 12); element.Brush = new PdfSolidBrush(new PdfColor(89, 89, 93)); PdfLayoutResult result = element.Draw(page, new RectangleF(0, 0, page.Graphics.ClientSize.Width / 2, 200)); Stream imgStream = typeof(Invoice).GetTypeInfo().Assembly.GetManifestResourceStream("Syncfusion.SampleBrowser.UWP.Pdf.Pdf.Assets.logo.jpg"); PdfImage img = new PdfBitmap(imgStream); page.Graphics.DrawImage(img, new RectangleF(g.ClientSize.Width - 200, result.Bounds.Y, 190, 45)); PdfFont subHeadingFont = new PdfStandardFont(PdfFontFamily.TimesRoman, 14); g.DrawRectangle(new PdfSolidBrush(new PdfColor(126, 151, 173)), new RectangleF(0, result.Bounds.Bottom + 40, g.ClientSize.Width, 30)); element = new PdfTextElement("INVOICE " + id.ToString(), subHeadingFont); element.Brush = PdfBrushes.White; result = element.Draw(page, new PointF(10, result.Bounds.Bottom + 48)); string currentDate = "DATE " + DateTime.Now.ToString("MM/dd/yyyy"); SizeF textSize = subHeadingFont.MeasureString(currentDate); g.DrawString(currentDate, subHeadingFont, element.Brush, new PointF(g.ClientSize.Width - textSize.Width - 10, result.Bounds.Y)); element = new PdfTextElement("BILL TO ", new PdfStandardFont(PdfFontFamily.TimesRoman, 10)); element.Brush = new PdfSolidBrush(new PdfColor(126, 155, 203)); result = element.Draw(page, new PointF(10, result.Bounds.Bottom + 25)); g.DrawLine(new PdfPen(new PdfColor(126, 151, 173), 0.70f), new PointF(0, result.Bounds.Bottom + 3), new PointF(g.ClientSize.Width, result.Bounds.Bottom + 3)); GetShipDetails(shipDetails); element = new PdfTextElement(shipName, new PdfStandardFont(PdfFontFamily.TimesRoman, 10)); element.Brush = new PdfSolidBrush(new PdfColor(89, 89, 93)); result = element.Draw(page, new RectangleF(10, result.Bounds.Bottom + 5, g.ClientSize.Width / 2, 100)); element = new PdfTextElement(string.Format("{0}, {1}, {2}", address, shipCity, shipCountry), new PdfStandardFont(PdfFontFamily.TimesRoman, 10)); element.Brush = new PdfSolidBrush(new PdfColor(89, 89, 93)); result = element.Draw(page, new RectangleF(10, result.Bounds.Bottom + 3, g.ClientSize.Width / 2, 100)); PdfGrid grid = new PdfGrid(); grid.DataSource = reducedList; PdfGridCellStyle cellStyle = new PdfGridCellStyle(); cellStyle.Borders.All = PdfPens.White; PdfGridRow header = grid.Headers[0]; PdfGridCellStyle headerStyle = new PdfGridCellStyle(); headerStyle.Borders.All = new PdfPen(new PdfColor(126, 151, 173)); headerStyle.BackgroundBrush = new PdfSolidBrush(new PdfColor(126, 151, 173)); headerStyle.TextBrush = PdfBrushes.White; headerStyle.Font = new PdfStandardFont(PdfFontFamily.TimesRoman, 14f, PdfFontStyle.Regular); for (int i = 0; i < header.Cells.Count; i++) { if (i == 0 || i == 1) { header.Cells[i].StringFormat = new PdfStringFormat(PdfTextAlignment.Left, PdfVerticalAlignment.Middle); } else { header.Cells[i].StringFormat = new PdfStringFormat(PdfTextAlignment.Right, PdfVerticalAlignment.Middle); } } header.ApplyStyle(headerStyle); cellStyle.Borders.Bottom = new PdfPen(new PdfColor(217, 217, 217), 0.70f); cellStyle.Font = new PdfStandardFont(PdfFontFamily.TimesRoman, 12f); cellStyle.TextBrush = new PdfSolidBrush(new PdfColor(131, 130, 136)); foreach (PdfGridRow row in grid.Rows) { row.ApplyStyle(cellStyle); for (int i = 0; i < row.Cells.Count; i++) { PdfGridCell cell = row.Cells[i]; if (i == 1) { cell.StringFormat = new PdfStringFormat(PdfTextAlignment.Left, PdfVerticalAlignment.Middle); } else if (i == 0) { cell.StringFormat = new PdfStringFormat(PdfTextAlignment.Center, PdfVerticalAlignment.Middle); } else { cell.StringFormat = new PdfStringFormat(PdfTextAlignment.Right, PdfVerticalAlignment.Middle); } if (i > 2) { float val = float.MinValue; float.TryParse(cell.Value.ToString(), out val); cell.Value = '$' + val.ToString("0.00"); } } } grid.Columns[0].Width = 100; grid.Columns[1].Width = 200; PdfGridLayoutFormat layoutFormat = new PdfGridLayoutFormat(); layoutFormat.Layout = PdfLayoutType.Paginate; PdfGridLayoutResult gridResult = grid.Draw(page, new RectangleF(new PointF(0, result.Bounds.Bottom + 40), new SizeF(g.ClientSize.Width, g.ClientSize.Height - 100)), layoutFormat); float pos = 0.0f; for (int i = 0; i < grid.Columns.Count - 1; i++) { pos += grid.Columns[i].Width; } PdfFont font = new PdfStandardFont(PdfFontFamily.TimesRoman, 14f); GetTotalPrice(products); gridResult.Page.Graphics.DrawString("Total Due", font, new PdfSolidBrush(new PdfColor(126, 151, 173)), new RectangleF(new PointF(pos, gridResult.Bounds.Bottom + 20), new SizeF(grid.Columns[3].Width - pos, 20)), new PdfStringFormat(PdfTextAlignment.Right)); gridResult.Page.Graphics.DrawString("Thank you for your business!", new PdfStandardFont(PdfFontFamily.TimesRoman, 12), new PdfSolidBrush(new PdfColor(89, 89, 93)), new PointF(pos - 55, gridResult.Bounds.Bottom + 60)); pos += grid.Columns[4].Width; gridResult.Page.Graphics.DrawString('$' + string.Format("{0:N2}", total), font, new PdfSolidBrush(new PdfColor(131, 130, 136)), new RectangleF(new PointF(pos, gridResult.Bounds.Bottom + 20), new SizeF(grid.Columns[4].Width - pos, 20)), new PdfStringFormat(PdfTextAlignment.Right)); MemoryStream stream = new MemoryStream(); await document.SaveAsync(stream); document.Close(true); Save(stream, "Invoice.pdf"); }
/// <summary> /// Creates PDF /// </summary> public async void CreatePDF(IList <InvoiceItem> dataSource, BillingInformation billInfo, double totalDue) { PdfDocument document = new PdfDocument(); document.PageSettings.Orientation = PdfPageOrientation.Portrait; document.PageSettings.Margins.All = 50; PdfPage page = document.Pages.Add(); PdfGraphics g = page.Graphics; PdfTextElement element = new PdfTextElement(@"Syncfusion Software 2501 Aerial Center Parkway Suite 200 Morrisville, NC 27560 USA Tel +1 888.936.8638 Fax +1 919.573.0306"); element.Font = new PdfStandardFont(PdfFontFamily.TimesRoman, 12); element.Brush = new PdfSolidBrush(new PdfColor(0, 0, 0)); PdfLayoutResult result = element.Draw(page, new RectangleF(0, 0, page.Graphics.ClientSize.Width / 2, 200)); Stream imgStream = typeof(MainPage).GetTypeInfo().Assembly.GetManifestResourceStream("Syncfusion.SampleBrowser.UWP.DocIO.DocIO.Invoice.Assets.SyncfusionLogo.jpg"); PdfImage img = PdfImage.FromStream(imgStream); page.Graphics.DrawImage(img, new RectangleF(g.ClientSize.Width - 200, result.Bounds.Y, 190, 45)); PdfFont subHeadingFont = new PdfStandardFont(PdfFontFamily.TimesRoman, 14); g.DrawRectangle(new PdfSolidBrush(new PdfColor(34, 83, 142)), new RectangleF(0, result.Bounds.Bottom + 40, g.ClientSize.Width, 30)); element = new PdfTextElement("INVOICE " + billInfo.InvoiceNumber.ToString(), subHeadingFont); element.Brush = PdfBrushes.White; result = element.Draw(page, new PointF(10, result.Bounds.Bottom + 48)); string currentDate = "DATE " + billInfo.Date.ToString("d"); SizeF textSize = subHeadingFont.MeasureString(currentDate); g.DrawString(currentDate, subHeadingFont, element.Brush, new PointF(g.ClientSize.Width - textSize.Width - 10, result.Bounds.Y)); element = new PdfTextElement("BILL TO ", new PdfStandardFont(PdfFontFamily.TimesRoman, 12)); element.Brush = new PdfSolidBrush(new PdfColor(34, 83, 142)); result = element.Draw(page, new PointF(10, result.Bounds.Bottom + 25)); g.DrawLine(new PdfPen(new PdfColor(34, 83, 142), 0.70f), new PointF(0, result.Bounds.Bottom + 3), new PointF(g.ClientSize.Width, result.Bounds.Bottom + 3)); element = new PdfTextElement(billInfo.Name, new PdfStandardFont(PdfFontFamily.TimesRoman, 11)); element.Brush = new PdfSolidBrush(new PdfColor(0, 0, 0)); result = element.Draw(page, new RectangleF(10, result.Bounds.Bottom + 5, g.ClientSize.Width / 2, 100)); element = new PdfTextElement(billInfo.Address, new PdfStandardFont(PdfFontFamily.TimesRoman, 11)); element.Brush = new PdfSolidBrush(new PdfColor(0, 0, 0)); result = element.Draw(page, new RectangleF(10, result.Bounds.Bottom + 3, g.ClientSize.Width / 2, 100)); string[] headers = new string[] { "Item", "Quantity", "Rate", "Taxes", "Amount" }; PdfGrid grid = new PdfGrid(); grid.Columns.Add(headers.Length); //Adding headers in to the grid grid.Headers.Add(1); PdfGridRow headerRow = grid.Headers[0]; int count = 0; foreach (string columnName in headers) { headerRow.Cells[count].Value = columnName; count++; } //Adding rows into the grid foreach (var item in dataSource) { PdfGridRow row = grid.Rows.Add(); row.Cells[0].Value = item.ItemName; row.Cells[1].Value = item.Quantity.ToString(); row.Cells[2].Value = "$" + item.Rate.ToString("#,###.00", CultureInfo.InvariantCulture); row.Cells[3].Value = "$" + item.Taxes.ToString("#,###.00", CultureInfo.InvariantCulture); row.Cells[4].Value = "$" + item.TotalAmount.ToString("#,###.00", CultureInfo.InvariantCulture); } PdfGridCellStyle cellStyle = new PdfGridCellStyle(); cellStyle.Borders.All = PdfPens.White; PdfGridRow header = grid.Headers[0]; PdfGridCellStyle headerStyle = new PdfGridCellStyle(); headerStyle.Borders.All = new PdfPen(new PdfColor(34, 83, 142)); headerStyle.BackgroundBrush = new PdfSolidBrush(new PdfColor(34, 83, 142)); headerStyle.TextBrush = PdfBrushes.White; headerStyle.Font = new PdfStandardFont(PdfFontFamily.TimesRoman, 12f, PdfFontStyle.Regular); for (int i = 0; i < header.Cells.Count; i++) { if (i == 0) { header.Cells[i].StringFormat = new PdfStringFormat(PdfTextAlignment.Left, PdfVerticalAlignment.Middle); } else { header.Cells[i].StringFormat = new PdfStringFormat(PdfTextAlignment.Right, PdfVerticalAlignment.Middle); } } header.Cells[0].Value = "ITEM"; header.Cells[1].Value = "QUANTITY"; header.Cells[2].Value = "RATE"; header.Cells[3].Value = "TAXES"; header.Cells[4].Value = "AMOUNT"; header.ApplyStyle(headerStyle); grid.Columns[0].Width = 180; cellStyle.Borders.Bottom = new PdfPen(new PdfColor(34, 83, 142), 0.70f); cellStyle.Font = new PdfStandardFont(PdfFontFamily.TimesRoman, 11f); cellStyle.TextBrush = new PdfSolidBrush(new PdfColor(0, 0, 0)); foreach (PdfGridRow row in grid.Rows) { row.ApplyStyle(cellStyle); for (int i = 0; i < row.Cells.Count; i++) { PdfGridCell cell = row.Cells[i]; if (i == 0) { cell.StringFormat = new PdfStringFormat(PdfTextAlignment.Left, PdfVerticalAlignment.Middle); } else { cell.StringFormat = new PdfStringFormat(PdfTextAlignment.Right, PdfVerticalAlignment.Middle); } if (i > 1) { if (cell.Value.ToString().Contains("$")) { cell.Value = cell.Value.ToString(); } else { if (cell.Value is double) { cell.Value = "$" + ((double)cell.Value).ToString("#,###.00", CultureInfo.InvariantCulture); } else { cell.Value = "$" + cell.Value.ToString(); } } } } } PdfGridLayoutFormat layoutFormat = new PdfGridLayoutFormat(); layoutFormat.Layout = PdfLayoutType.Paginate; PdfGridLayoutResult gridResult = grid.Draw(page, new RectangleF(new PointF(0, result.Bounds.Bottom + 40), new SizeF(g.ClientSize.Width, g.ClientSize.Height - 100)), layoutFormat); float pos = 0.0f; for (int i = 0; i < grid.Columns.Count - 1; i++) { pos += grid.Columns[i].Width; } PdfFont font = new PdfStandardFont(PdfFontFamily.TimesRoman, 12f, PdfFontStyle.Bold); gridResult.Page.Graphics.DrawString("TOTAL DUE", font, new PdfSolidBrush(new PdfColor(34, 83, 142)), new RectangleF(new PointF(pos, gridResult.Bounds.Bottom + 10), new SizeF(grid.Columns[3].Width - pos, 20)), new PdfStringFormat(PdfTextAlignment.Right)); gridResult.Page.Graphics.DrawString("Thank you for your business!", new PdfStandardFont(PdfFontFamily.TimesRoman, 12), new PdfSolidBrush(new PdfColor(0, 0, 0)), new PointF(pos - 210, gridResult.Bounds.Bottom + 60)); pos += grid.Columns[4].Width; gridResult.Page.Graphics.DrawString("$" + totalDue.ToString("#,###.00", CultureInfo.InvariantCulture), font, new PdfSolidBrush(new PdfColor(0, 0, 0)), new RectangleF(pos, gridResult.Bounds.Bottom + 10, grid.Columns[4].Width - pos, 20), new PdfStringFormat(PdfTextAlignment.Right)); StorageFile stFile = null; if (!(Windows.Foundation.Metadata.ApiInformation.IsTypePresent("Windows.Phone.UI.Input.HardwareButtons"))) { FileSavePicker savePicker = new FileSavePicker(); savePicker.DefaultFileExtension = ".pdf"; savePicker.SuggestedFileName = "Invoice"; savePicker.FileTypeChoices.Add("Adobe PDF Document", new List <string>() { ".pdf" }); stFile = await savePicker.PickSaveFileAsync(); } else { StorageFolder local = Windows.Storage.ApplicationData.Current.LocalFolder; stFile = await local.CreateFileAsync("Invoice.pdf", CreationCollisionOption.ReplaceExisting); } if (stFile != null) { Stream stream = await stFile.OpenStreamForWriteAsync(); await document.SaveAsync(stream); stream.Flush(); stream.Dispose(); document.Close(true); MessageDialog msgDialog = new MessageDialog("Do you want to view the Document?", "File has been created successfully."); UICommand yesCmd = new UICommand("Yes"); msgDialog.Commands.Add(yesCmd); UICommand noCmd = new UICommand("No"); msgDialog.Commands.Add(noCmd); IUICommand cmd = await msgDialog.ShowAsync(); if (cmd == yesCmd) { // Launch the saved file bool success = await Windows.System.Launcher.LaunchFileAsync(stFile); } } }
public async Task <FileStreamResult> CompleteAsync(int?id) { var paper = await _context.papers .FirstOrDefaultAsync(m => m.id == id); List <StudentData> students = new List <StudentData>(); List <StudentData> print = new List <StudentData>(); students = await _context.studentDatas.ToListAsync(); StudentData student = null; for (int i = 0; i < students.Count(); i++) { if ((students[i].Studentid).Equals(paper.StudentID)) { student = new StudentData(); student.Faculty = students[i].Faculty; student.Course = students[i].Course; student.Note = students[i].Note; print.Add(student); } } PdfDocument document = new PdfDocument(); //Add a page to the document PdfPage page = document.Pages.Add(); //Create PDF graphics for the page PdfGraphics graphics = page.Graphics; //Set the standard font PdfFont font = new PdfStandardFont(PdfFontFamily.Helvetica, 20); FileStream imageStream = new FileStream("ua.jpg", FileMode.Open, FileAccess.Read); PdfBitmap image = new PdfBitmap(imageStream); //Draw the image graphics.DrawImage(image, 30, 0); if (paper.type == "Notes") { DataTable table = new DataTable("INFO"); // Declare DataColumn and DataRow variables. DataColumn column; DataColumn column2; // Create column. column = new DataColumn(); column.DataType = Type.GetType("System.String"); column.ColumnName = "Course"; table.Columns.Add(column); column2 = new DataColumn(); column2.DataType = Type.GetType("System.Int32"); column2.ColumnName = "Note"; table.Columns.Add(column2); foreach (StudentData item in print) { table.Rows.Add(item.Course, item.Note); } PdfBrush solidBrush = new PdfSolidBrush(new PdfColor(126, 151, 173)); Rectangle bounds = new RectangleF(0, 200, graphics.ClientSize.Width, 30); //Draws a rectangle to place the heading in that region. graphics.DrawRectangle(solidBrush, bounds); //Creates a font for adding the heading in the page PdfFont subHeadingFont = new PdfStandardFont(PdfFontFamily.TimesRoman, 14); //Creates a text element to add the invoice number PdfTextElement element = new PdfTextElement("Student " + paper.Firstname + " " + paper.lastname, subHeadingFont); element.Brush = PdfBrushes.White; //Draws the heading on the page PdfLayoutResult result = element.Draw(page, new PointF(10, bounds.Top + 8)); string currentDate = "DATE " + DateTime.Now.ToString("MM/dd/yyyy"); //Measures the width of the text to place it in the correct location SizeF textSize = subHeadingFont.MeasureString(currentDate); PointF textPosition = new PointF(graphics.ClientSize.Width - textSize.Width - 10, result.Bounds.Y); //Draws the date by using DrawString method graphics.DrawString(currentDate, subHeadingFont, element.Brush, textPosition); PdfFont timesRoman = new PdfStandardFont(PdfFontFamily.TimesRoman, 10); //Creates text elements to add the address and draw it to the page. element = new PdfTextElement("Student ID: " + paper.StudentID, timesRoman); element.Brush = new PdfSolidBrush(new PdfColor(126, 155, 203)); result = element.Draw(page, new PointF(10, result.Bounds.Bottom + 25)); PdfPen linePen = new PdfPen(new PdfColor(126, 151, 173), 0.70f); PointF startPoint = new PointF(0, result.Bounds.Bottom + 3); PointF endPoint = new PointF(graphics.ClientSize.Width, result.Bounds.Bottom + 3); //Draws a line at the bottom of the address graphics.DrawLine(linePen, startPoint, endPoint); //Creates the datasource for the table //Creates a PDF grid PdfGrid grid = new PdfGrid(); //Adds the data source grid.DataSource = table; //Creates the grid cell styles PdfGridCellStyle cellStyle = new PdfGridCellStyle(); cellStyle.Borders.All = PdfPens.White; PdfGridRow header = grid.Headers[0]; //Creates the header style PdfGridCellStyle headerStyle = new PdfGridCellStyle(); headerStyle.Borders.All = new PdfPen(new PdfColor(126, 151, 173)); headerStyle.BackgroundBrush = new PdfSolidBrush(new PdfColor(126, 151, 173)); headerStyle.TextBrush = PdfBrushes.White; headerStyle.Font = new PdfStandardFont(PdfFontFamily.TimesRoman, 14f, PdfFontStyle.Regular); //Adds cell customizations for (int i = 0; i < header.Cells.Count; i++) { if (i == 0 || i == 1) { header.Cells[i].StringFormat = new PdfStringFormat(PdfTextAlignment.Left, PdfVerticalAlignment.Middle); } else { header.Cells[i].StringFormat = new PdfStringFormat(PdfTextAlignment.Right, PdfVerticalAlignment.Middle); } } //Applies the header style header.ApplyStyle(headerStyle); cellStyle.Borders.Bottom = new PdfPen(new PdfColor(217, 217, 217), 0.70f); cellStyle.Font = new PdfStandardFont(PdfFontFamily.TimesRoman, 12f); cellStyle.TextBrush = new PdfSolidBrush(new PdfColor(131, 130, 136)); //Creates the layout format for grid PdfGridLayoutFormat layoutFormat = new PdfGridLayoutFormat(); // Creates layout format settings to allow the table pagination layoutFormat.Layout = PdfLayoutType.Paginate; //Draws the grid to the PDF page. PdfGridLayoutResult gridResult = grid.Draw(page, new RectangleF(new PointF(0, result.Bounds.Bottom + 40), new SizeF(graphics.ClientSize.Width, graphics.ClientSize.Height - 100)), layoutFormat); } if (paper.type == "Continue Education") { int now = DateTime.Now.Year; int y = now - 1; String text = "The student " + paper.Firstname + " " + paper.lastname + " continu his/her education for the year: "; String text2 = y + "-" + now; graphics.DrawString(text, font, PdfBrushes.Black, new PointF(0, 180)); graphics.DrawString(text2, font, PdfBrushes.Red, new PointF(0, 210)); } //Saving the PDF to the MemoryStream MemoryStream stream = new MemoryStream(); document.Save(stream); //Set the position as '0'. stream.Position = 0; //Download the PDF document in the browser FileStreamResult fileStreamResult = new FileStreamResult(stream, "application/pdf"); fileStreamResult.FileDownloadName = paper.StudentID + "_" + paper.type + ".pdf"; paper.Status = "Complete"; _context.Update(paper); await _context.SaveChangesAsync(); RedirectToAction("Admin"); return(fileStreamResult); }
public bool CreatePDF(Movimientos movimientos, DataTable tablacarrito, Model.Usuario User) { try { PdfDocument document = new PdfDocument(); //Adds page settings document.PageSettings.Orientation = PdfPageOrientation.Portrait; document.PageSettings.Margins.All = 50; //Adds a page to the document PdfPage page = document.Pages.Add(); PdfGraphics graphics = page.Graphics; //Loads the image from disk //PdfImage image = PdfImage.FromFile("Logo.png"); Stream imageStream = typeof(App).GetTypeInfo().Assembly.GetManifestResourceStream("Inventario2.Assets.NewLogo.jpeg"); //Load the image from the disk. PdfBitmap image = new PdfBitmap(imageStream); //Draw the image RectangleF bounds = new RectangleF(0, 0, 110, 110); //Draws the image to the PDF page page.Graphics.DrawImage(image, bounds); //DRAW THE MAIN TITLE PdfFont Headfont = new PdfStandardFont(PdfFontFamily.Helvetica, 20); //Creates a text element to add the invoice number PdfTextElement headelement = new PdfTextElement("AUDIO VIDEO STUDIOS ", Headfont); headelement.Brush = PdfBrushes.Red; PdfLayoutResult result = headelement.Draw(page, new PointF(graphics.ClientSize.Width - 350, graphics.ClientSize.Height - 740)); PdfFont Subtitle = new PdfStandardFont(PdfFontFamily.Helvetica, 14); //Creates a text element to add the invoice number PdfTextElement subtitelement = new PdfTextElement("ORDEN DE SALIDA ", Subtitle); subtitelement.Brush = PdfBrushes.Red; PdfLayoutResult Subresult = subtitelement.Draw(page, new PointF(graphics.ClientSize.Width - 300, graphics.ClientSize.Height - 710)); PdfBrush solidBrush = new PdfSolidBrush(new PdfColor(222, 237, 242)); bounds = new RectangleF(bounds.Right, Subresult.Bounds.Bottom, graphics.ClientSize.Width - 300, 50); //Draws a rectangle to place the heading in that region. graphics.DrawRectangle(solidBrush, bounds); //creating fields, folio, fecha, lugar PdfFont campofont = new PdfStandardFont(PdfFontFamily.TimesRoman, 12); PdfTextElement lblugar = new PdfTextElement("EVENTO: ", campofont); lblugar.Brush = PdfBrushes.Black; PdfLayoutResult reslblugar = lblugar.Draw(page, new PointF(bounds.Left + 40, bounds.Top)); PdfTextElement lbfecha = new PdfTextElement("FECHA: ", campofont); lbfecha.Brush = PdfBrushes.Black; PdfLayoutResult reslbfecha = lbfecha.Draw(page, new PointF(bounds.Left + 40, bounds.Top + 16)); PdfTextElement lbfolio = new PdfTextElement("FOLIO: ", campofont); lbfolio.Brush = PdfBrushes.Black; PdfLayoutResult reslbfolio = lbfolio.Draw(page, new PointF(bounds.Left + 40, bounds.Top + 32)); PdfBrush solidBrush2 = new PdfSolidBrush(new PdfColor(190, 220, 228)); bounds = new RectangleF(bounds.Right, Subresult.Bounds.Bottom, graphics.ClientSize.Width - 300, 50); //Draws a rectangle to place the heading in that region. graphics.DrawRectangle(solidBrush2, bounds); //variables de campos PdfTextElement lugar = new PdfTextElement(movimientos.lugar, campofont); lugar.Brush = PdfBrushes.Black; PdfLayoutResult reslugar = lugar.Draw(page, new PointF(bounds.Left + 40, bounds.Top)); PdfTextElement fecha = new PdfTextElement(DateTime.Now.ToString(), campofont); fecha.Brush = PdfBrushes.Black; PdfLayoutResult resfecha = fecha.Draw(page, new PointF(bounds.Left + 40, bounds.Top + 16)); PdfTextElement folio = new PdfTextElement(movimientos.ID, campofont); folio.Brush = PdfBrushes.Black; PdfLayoutResult resfolio = folio.Draw(page, new PointF(bounds.Left + 40, bounds.Top + 32)); //create table //Creates the datasource for the table DataTable invoiceDetails = tablacarrito; //Creates a PDF grid PdfGrid grid = new PdfGrid(); //Adds the data source grid.DataSource = invoiceDetails; //Creates the grid cell styles PdfGridCellStyle cellStyle = new PdfGridCellStyle(); cellStyle.Borders.All = PdfPens.White; PdfGridRow header = grid.Headers[0]; //Creates the header style PdfGridCellStyle headerStyle = new PdfGridCellStyle(); headerStyle.Borders.All = new PdfPen(new PdfColor(126, 151, 173)); headerStyle.BackgroundBrush = new PdfSolidBrush(new PdfColor(126, 151, 173)); headerStyle.TextBrush = PdfBrushes.White; headerStyle.Font = new PdfStandardFont(PdfFontFamily.TimesRoman, 16f, PdfFontStyle.Regular); //Adds cell customizations for (int i = 0; i < header.Cells.Count; i++) { if (i == 0 || i == 1) { header.Cells[i].StringFormat = new PdfStringFormat(PdfTextAlignment.Left, PdfVerticalAlignment.Middle); } else { header.Cells[i].StringFormat = new PdfStringFormat(PdfTextAlignment.Right, PdfVerticalAlignment.Middle); } } //Applies the header style header.ApplyStyle(headerStyle); cellStyle.Borders.Bottom = new PdfPen(new PdfColor(217, 217, 217), 0.70f); cellStyle.Font = new PdfStandardFont(PdfFontFamily.TimesRoman, 10f); cellStyle.TextBrush = new PdfSolidBrush(new PdfColor(131, 130, 136)); //Creates the layout format for grid PdfGridLayoutFormat layoutFormat = new PdfGridLayoutFormat(); // Creates layout format settings to allow the table pagination layoutFormat.Layout = PdfLayoutType.Paginate; //Draws the grid to the PDF page. PdfGridLayoutResult gridResult = grid.Draw(page, new RectangleF(new PointF(0, result.Bounds.Bottom + 150), new SizeF(graphics.ClientSize.Width, graphics.ClientSize.Height - 100)), layoutFormat); PdfGraphics graphicsSecond = gridResult.Page.Graphics; PdfPen linePen = new PdfPen(new PdfColor(126, 151, 173), 1.0f); PointF startPoint = new PointF(0, gridResult.Bounds.Bottom + 60); PointF endPoint = new PointF(150, gridResult.Bounds.Bottom + 60); //Draws a line at the bottom of the address graphicsSecond.DrawLine(linePen, startPoint, endPoint); PdfFont entregafont = new PdfStandardFont(PdfFontFamily.TimesRoman, 12); PdfTextElement lbentrega = new PdfTextElement("ENTREGA: ", entregafont); lbentrega.Brush = PdfBrushes.Black; PdfLayoutResult reslbentrega = lbentrega.Draw(gridResult.Page, new PointF(linePen.Width / 2.0f, startPoint.Y + 5)); //texto de quien entrega PdfFont usuarioentregafont = new PdfStandardFont(PdfFontFamily.TimesRoman, 12); PdfTextElement lbusuarioentrega = new PdfTextElement(Model.User.nombre + " " + Model.User.apellido_paterno, usuarioentregafont); lbusuarioentrega.Brush = PdfBrushes.Black; PdfLayoutResult reslbusuarioentrega = lbusuarioentrega.Draw(gridResult.Page, new PointF(linePen.Width / 2.0f, startPoint.Y - 20)); PdfPen linePenfinal = new PdfPen(new PdfColor(126, 151, 173), 1.0f); PointF startPointfinal = new PointF(350, gridResult.Bounds.Bottom + 60); PointF endPointfinal = new PointF(graphics.ClientSize.Width, gridResult.Bounds.Bottom + 60); //Draws a line at the bottom of the address graphicsSecond.DrawLine(linePenfinal, startPointfinal, endPointfinal); PdfFont recibefont = new PdfStandardFont(PdfFontFamily.TimesRoman, 12); PdfTextElement lbrecibe = new PdfTextElement("RECIBE: ", recibefont); lbrecibe.Brush = PdfBrushes.Black; PdfLayoutResult reslbrecibe = lbrecibe.Draw(gridResult.Page, new PointF(350.0f + (linePenfinal.Width / 2.0f), startPoint.Y + 5)); //texto de quien recibe PdfFont usuariofont = new PdfStandardFont(PdfFontFamily.TimesRoman, 12); PdfTextElement lbusuario = new PdfTextElement(User.nombre + " " + User.apellido_paterno, usuariofont); lbusuario.Brush = PdfBrushes.Black; PdfLayoutResult reslbusuario = lbusuario.Draw(gridResult.Page, new PointF(350.0f + (linePenfinal.Width / 2.0f), startPoint.Y - 20)); MemoryStream stream = new MemoryStream(); //Save the document. document.Save(stream); streamPDF = stream; //Close the document. document.Close(true); byte[] bytes = stream.ToArray(); bool res = SendSTMPT(bytes, correo); string save = "OrdenDeSalida-" + movimientos.ID; //Save the stream as a file in the device and invoke it for viewing // Xamarin.Forms.DependencyService.Get<ISave>().SaveAndView(save + ".pdf", "application/pdf", stream); //The operation in Save under Xamarin varies between Windows Phone, Android and iOS platforms. Please refer PDF/Xamarin section for respective code samples. if (Device.OS == TargetPlatform.WinPhone || Device.OS == TargetPlatform.Windows) { // Xamarin.Forms.DependencyService.Get<ISaveWindowsPhone>().Save("Output.pdf", "application/pdf", stream); Xamarin.Forms.DependencyService.Get <ISave>().SaveAndView(save + ".pdf", "application/pdf", stream); } else { Xamarin.Forms.DependencyService.Get <ISave>().SaveAndView(save + ".pdf", "application/pdf", stream); } return(true); } catch { return(false); } }
public void CreatePDF(List <object[]> items) { //Create a new PDF document. PdfDocument doc = new PdfDocument(); //Add a page. PdfPage page = doc.Pages.Add(); //Create a PdfGrid. PdfGrid pdfGrid = new PdfGrid(); //Loads the image from disk string CSPath = Directory.GetParent(Directory.GetParent(Directory.GetParent(Directory.GetCurrentDirectory()).FullName).FullName).FullName; string ImagePath = Path.Combine(CSPath, @"DAL\Images\LongLogo.jpeg"); PdfImage image = PdfImage.FromFile(ImagePath); RectangleF bounds = new RectangleF(50, 0, 400, 150); //Draws the image to the PDF page page.Graphics.DrawImage(image, bounds); Font font = new Font("Ariel", 14); PdfFont pdfFont = new PdfTrueTypeFont(font, true); PdfStringFormat format = new PdfStringFormat(); //Set right-to-left text direction for RTL text format.TextDirection = PdfTextDirection.RightToLeft; format.Alignment = PdfTextAlignment.Right; //Draw grid to the page of PDF document. PdfBrush solidBrush = new PdfSolidBrush(new PdfColor(126, 151, 173)); bounds = new RectangleF(0, bounds.Bottom + 90, page.Graphics.ClientSize.Width, 30); //Draws a rectangle to place the heading in that region. page.Graphics.DrawRectangle(solidBrush, bounds); //Creates a text element to add the invoice number PdfTextElement element = new PdfTextElement("", pdfFont); element.Brush = PdfBrushes.White; //Draws the heading on the page PdfLayoutResult result = element.Draw(page, new PointF(10, bounds.Top + 8)); string currentDate = DateTime.Now.ToString("MM/dd/yyyy"); //Measures the width of the text to place it in the correct location SizeF textSize = pdfFont.MeasureString(currentDate); PointF textPosition = new PointF(page.Graphics.ClientSize.Width - textSize.Width + 70, result.Bounds.Y); //Draws the date by using DrawString method page.Graphics.DrawString(currentDate, pdfFont, element.Brush, textPosition, format); //Creates text elements to add the address and draw it to the page. element = new PdfTextElement("רשימת הקניות שלך:", pdfFont); element.Brush = new PdfSolidBrush(new PdfColor(126, 155, 203)); element.StringFormat = format; result = element.Draw(page, new PointF(page.Graphics.ClientSize.Width - textSize.Width + 70, result.Bounds.Bottom + 25)); PdfPen linePen = new PdfPen(new PdfColor(126, 151, 173), 0.70f); PointF startPoint = new PointF(0, result.Bounds.Bottom + 3); PointF endPoint = new PointF(page.Graphics.ClientSize.Width, result.Bounds.Bottom + 3); //Draws a line at the bottom of the address page.Graphics.DrawLine(linePen, startPoint, endPoint); //Create a DataTable. DataTable dataTable = new DataTable(); //Add columns to the DataTable dataTable.Columns.Add("הכי זול אצל:"); dataTable.Columns.Add("כמות"); dataTable.Columns.Add("תיאור"); dataTable.Columns.Add("שם"); //Add rows to the DataTable. foreach (var item in items) { dataTable.Rows.Add(item); } //Creates the datasource for the table DataTable Details = dataTable; //Creates a PDF grid PdfGrid grid = new PdfGrid(); grid.Style.Font = pdfFont; //Adds the data source grid.DataSource = Details; //Creates the grid cell styles PdfGridCellStyle cellStyle = new PdfGridCellStyle(); cellStyle.Borders.All = PdfPens.White; //PdfGridRow header = grid.Headers[0]; //Creates the header style PdfGridCellStyle headerStyle = new PdfGridCellStyle(); headerStyle.Borders.All = new PdfPen(new PdfColor(126, 151, 173)); headerStyle.BackgroundBrush = new PdfSolidBrush(new PdfColor(126, 151, 173)); headerStyle.TextBrush = PdfBrushes.White; headerStyle.Font = pdfFont; headerStyle.StringFormat = format; //Applies the header style grid.Headers[0].ApplyStyle(headerStyle); foreach (PdfGridColumn Column in grid.Columns) { Column.Format = format; } cellStyle.Borders.Bottom = new PdfPen(new PdfColor(217, 217, 217), 0.70f); cellStyle.Font = pdfFont; cellStyle.TextBrush = new PdfSolidBrush(new PdfColor(131, 130, 136)); cellStyle.StringFormat = format; //Creates the layout format for grid PdfGridLayoutFormat layoutFormat = new PdfGridLayoutFormat(); // Creates layout format settings to allow the table pagination layoutFormat.Layout = PdfLayoutType.Paginate; //Draws the grid to the PDF page. PdfGridLayoutResult gridResult = grid.Draw(page, new RectangleF(new PointF(0, result.Bounds.Bottom + 40), new SizeF(page.Graphics.ClientSize.Width, page.Graphics.ClientSize.Height - 100)), layoutFormat); pdfGrid.Draw(page, new PointF(10, 10)); //Save the document. try { doc.Save("Output.pdf"); System.Diagnostics.Process.Start("Output.pdf"); } catch { } //close the document doc.Close(true); }
public IActionResult Index() { //Creates a new PDF document PdfDocument document = new PdfDocument(); //Adds page settings document.PageSettings.Orientation = PdfPageOrientation.Landscape; document.PageSettings.Margins.All = 50; //Adds a page to the document PdfPage page = document.Pages.Add(); PdfGraphics graphics = page.Graphics; //Loads the image as stream FileStream imageStream = new FileStream("logo.png", FileMode.Open, FileAccess.Read); RectangleF bounds = new RectangleF(176, 0, 390, 130); PdfImage image = PdfImage.FromStream(imageStream); //Draws the image to the PDF page page.Graphics.DrawImage(image, bounds); PdfBrush solidBrush = new PdfSolidBrush(new PdfColor(126, 151, 173)); bounds = new RectangleF(0, bounds.Bottom + 90, graphics.ClientSize.Width, 30); //Draws a rectangle to place the heading in that region. graphics.DrawRectangle(solidBrush, bounds); //Creates a font for adding the heading in the page PdfFont subHeadingFont = new PdfStandardFont(PdfFontFamily.TimesRoman, 14); //Creates a text element to add the invoice number PdfTextElement element = new PdfTextElement("Purchase Order", subHeadingFont); element.Brush = PdfBrushes.White; //Draws the heading on the page PdfLayoutResult result = element.Draw(page, new PointF(10, bounds.Top + 8)); string currentDate = "DATE " + DateTime.Now.ToString("MM/dd/yyyy"); //Measures the width of the text to place it in the correct location SizeF textSize = subHeadingFont.MeasureString(currentDate); PointF textPosition = new PointF(graphics.ClientSize.Width - textSize.Width - 10, result.Bounds.Y); //Draws the date by using DrawString method graphics.DrawString(currentDate, subHeadingFont, element.Brush, textPosition); PdfFont timesRoman = new PdfStandardFont(PdfFontFamily.TimesRoman, 10); //Creates text elements to add the address and draw it to the page. element = new PdfTextElement("BILL TO ", timesRoman); element.Brush = new PdfSolidBrush(new PdfColor(126, 155, 203)); result = element.Draw(page, new PointF(10, result.Bounds.Bottom + 25)); PdfPen linePen = new PdfPen(new PdfColor(126, 151, 173), 0.70f); PointF startPoint = new PointF(0, result.Bounds.Bottom + 3); PointF endPoint = new PointF(graphics.ClientSize.Width, result.Bounds.Bottom + 3); //Draws a line at the bottom of the address graphics.DrawLine(linePen, startPoint, endPoint); //Creates the datasource for the table var invoiceDetails = GetProductDetailsAsDataTable(); //Creates a PDF grid PdfGrid grid = new PdfGrid(); //Adds the data source grid.DataSource = invoiceDetails; //Creates the grid cell styles PdfGridCellStyle cellStyle = new PdfGridCellStyle(); cellStyle.Borders.All = PdfPens.White; PdfGridRow header = grid.Headers[0]; //Creates the header style PdfGridCellStyle headerStyle = new PdfGridCellStyle(); headerStyle.Borders.All = new PdfPen(new PdfColor(126, 151, 173)); headerStyle.BackgroundBrush = new PdfSolidBrush(new PdfColor(126, 151, 173)); headerStyle.TextBrush = PdfBrushes.White; headerStyle.Font = new PdfStandardFont(PdfFontFamily.TimesRoman, 14f, PdfFontStyle.Regular); //Adds cell customizations for (int i = 0; i < header.Cells.Count; i++) { if (i == 0 || i == 1) { header.Cells[i].StringFormat = new PdfStringFormat(PdfTextAlignment.Left, PdfVerticalAlignment.Middle); } else { header.Cells[i].StringFormat = new PdfStringFormat(PdfTextAlignment.Right, PdfVerticalAlignment.Middle); } } //Applies the header style header.ApplyStyle(headerStyle); cellStyle.Borders.Bottom = new PdfPen(new PdfColor(217, 217, 217), 0.70f); cellStyle.Font = new PdfStandardFont(PdfFontFamily.TimesRoman, 12f); cellStyle.TextBrush = new PdfSolidBrush(new PdfColor(131, 130, 136)); //Creates the layout format for grid PdfGridLayoutFormat layoutFormat = new PdfGridLayoutFormat(); // Creates layout format settings to allow the table pagination layoutFormat.Layout = PdfLayoutType.Paginate; //Draws the grid to the PDF page. PdfGridLayoutResult gridResult = grid.Draw(page, new RectangleF(new PointF(0, result.Bounds.Bottom + 40), new SizeF(graphics.ClientSize.Width, graphics.ClientSize.Height - 100)), layoutFormat); //Save the PDF document to stream MemoryStream ms = new MemoryStream(); document.Save(ms); document.Close(true); ms.Position = 0; FileStreamResult fileStreamResult = new FileStreamResult(ms, "application/pdf"); fileStreamResult.FileDownloadName = "Sample.pdf"; return(fileStreamResult); }
public ActionResult DownloadPDF(int orderId) { var order = orderRepository.GetOrderDetailsById(orderId); int ShipingCharge = Convert.ToInt32(configuration["shippingCharge"]); PdfDocument document = new PdfDocument(); //Adds page settings document.PageSettings.Orientation = PdfPageOrientation.Landscape; document.PageSettings.Margins.All = 50; //Adds a page to the document PdfPage page = document.Pages.Add(); PdfGraphics graphics = page.Graphics; //Set the standard font PdfFont font = new PdfStandardFont(PdfFontFamily.Helvetica, 35, PdfFontStyle.Bold); //Draw the text graphics.DrawString("Prince Fashion!", font, PdfBrushes.Gray, new PointF(120, 5)); FileStream imageStream = new FileStream("wwwroot/images/logo.png", FileMode.Open, FileAccess.Read); RectangleF bounds = new RectangleF(10, 0, 80, 40); PdfImage image = PdfImage.FromStream(imageStream); //Draws the image to the PDF page page.Graphics.DrawImage(image, bounds); PdfBrush solidBrush = new PdfSolidBrush(new PdfColor(116, 152, 190)); bounds = new RectangleF(0, bounds.Bottom + 50, graphics.ClientSize.Width, 40); //Draws a rectangle to place the heading in that region. graphics.DrawRectangle(solidBrush, bounds); //Creates a font for adding the heading in the page PdfFont subHeadingFont = new PdfStandardFont(PdfFontFamily.TimesRoman, 14); //Creates a text element to add the invoice number PdfTextElement element1; if (order.OrderType.Equals("DoneOnlinepayment")) { element1 = new PdfTextElement("Type :: " + order.OrderType, subHeadingFont); } else { element1 = new PdfTextElement("Type :: COD "); } element1.Font = new PdfStandardFont(PdfFontFamily.Helvetica, 16, PdfFontStyle.Bold); element1.Brush = new PdfSolidBrush(new PdfColor(0, 0, 0)); element1.Draw(page, new PointF(graphics.ClientSize.Width - 250, bounds.Top - 40)); PdfTextElement element = new PdfTextElement("INVOICE " + orderId, subHeadingFont); element.Brush = PdfBrushes.White; //Draws the heading on the page PdfLayoutResult result = element.Draw(page, new PointF(10, bounds.Top + 8)); string currentDate = "DATE " + DateTime.Now.ToString("dd/MM/yyyy"); //Measures the width of the text to place it in the correct location SizeF textSize = subHeadingFont.MeasureString(currentDate); PointF textPosition = new PointF(graphics.ClientSize.Width - textSize.Width - 10, result.Bounds.Y); //Draws the date by using DrawString method graphics.DrawString(currentDate, subHeadingFont, element.Brush, textPosition); PdfFont timesRoman = new PdfStandardFont(PdfFontFamily.TimesRoman, 10); //Creates text elements to add the address and draw it to the page. element = new PdfTextElement("BILL TO ", timesRoman); element.Brush = new PdfSolidBrush(new PdfColor(126, 155, 203)); result = element.Draw(page, new PointF(10, result.Bounds.Bottom + 25)); element = new PdfTextElement("Name :: ", timesRoman); element.Brush = new PdfSolidBrush(new PdfColor(0, 0, 0)); result = element.Draw(page, new PointF(10, result.Bounds.Bottom + 5)); element = new PdfTextElement(order.FirstName.ToUpper() + " " + order.LastName.ToUpper(), timesRoman); element.Brush = new PdfSolidBrush(new PdfColor(0, 0, 0)); result = element.Draw(page, new PointF(result.Bounds.Left + 40, result.Bounds.Bottom - 10)); element = new PdfTextElement("Mob No :: ", timesRoman); element.Brush = new PdfSolidBrush(new PdfColor(0, 0, 0)); result = element.Draw(page, new PointF(result.Bounds.Left + 200, result.Bounds.Bottom - 10)); element = new PdfTextElement(order.PhoneNumber, timesRoman); element.Brush = new PdfSolidBrush(new PdfColor(0, 0, 0)); result = element.Draw(page, new PointF(result.Bounds.Left + 45, result.Bounds.Bottom - 10)); element = new PdfTextElement("Address :: ", timesRoman); element.Brush = new PdfSolidBrush(new PdfColor(0, 0, 0)); result = element.Draw(page, new PointF(10, result.Bounds.Bottom + 5)); element = new PdfTextElement(order.AddressLine1 + " , " + order.AddressLine2, timesRoman); element.Brush = new PdfSolidBrush(new PdfColor(0, 0, 0)); result = element.Draw(page, new PointF(result.Bounds.Left + 45, result.Bounds.Bottom - 10)); element = new PdfTextElement("Email Id:: ", timesRoman); element.Brush = new PdfSolidBrush(new PdfColor(0, 0, 0)); result = element.Draw(page, new PointF(result.Bounds.Left + 195, result.Bounds.Bottom - 10)); element = new PdfTextElement(order.Email, timesRoman); element.Brush = new PdfSolidBrush(new PdfColor(0, 0, 0)); result = element.Draw(page, new PointF(result.Bounds.Left + 45, result.Bounds.Bottom - 10)); element = new PdfTextElement(order.City + " , " + order.State + " -" + order.ZipCode, timesRoman); element.Brush = new PdfSolidBrush(new PdfColor(0, 0, 0)); result = element.Draw(page, new PointF(55, result.Bounds.Bottom + 5)); element = new PdfTextElement(order.Country, timesRoman); element.Brush = new PdfSolidBrush(new PdfColor(0, 0, 0)); result = element.Draw(page, new PointF(55, result.Bounds.Bottom + 5)); PdfPen linePen = new PdfPen(new PdfColor(126, 151, 173), 0.70f); PointF startPoint = new PointF(0, result.Bounds.Bottom + 3); PointF endPoint = new PointF(graphics.ClientSize.Width, result.Bounds.Bottom + 3); //Draws a line at the bottom of the address graphics.DrawLine(linePen, startPoint, endPoint); DataTable dt = new DataTable(); dt.Columns.Add("Product Code"); dt.Columns.Add("Product Disc"); dt.Columns.Add("Price"); dt.Columns.Add("Discount"); dt.Columns.Add("Discount Price"); foreach (var p in order.OrderLines) { float discountPrice = (float)Math.Round(p.Product.Price - p.Product.Price * p.Product.Discount / 100, 2); dt.Rows.Add(p.Product.ProductName, p.Product.ShortDescription, "Rs. " + p.Product.Price, p.Product.Discount + " %", "Rs. " + discountPrice); } if (order.OrderType.Equals("codpayment")) { dt.Rows.Add("Shipping Charge", "", "Rs. " + ShipingCharge, "", "Rs. " + ShipingCharge); } DataTable invoiceDetails = dt; //Creates a PDF grid PdfGrid grid = new PdfGrid(); //Adds the data source grid.DataSource = invoiceDetails; //Creates the grid cell styles PdfGridCellStyle cellStyle = new PdfGridCellStyle(); cellStyle.Borders.All = PdfPens.White; PdfGridRow header = grid.Headers[0]; //Creates the header style PdfGridCellStyle headerStyle = new PdfGridCellStyle(); headerStyle.Borders.All = new PdfPen(new PdfColor(126, 155, 203)); headerStyle.BackgroundBrush = new PdfSolidBrush(new PdfColor(126, 155, 203)); headerStyle.TextBrush = PdfBrushes.White; headerStyle.Font = new PdfStandardFont(PdfFontFamily.TimesRoman, 14f, PdfFontStyle.Regular); //Adds cell customizations for (int i = 0; i < header.Cells.Count; i++) { header.Cells[i].StringFormat = new PdfStringFormat(PdfTextAlignment.Center, PdfVerticalAlignment.Middle); } //Applies the header style header.ApplyStyle(headerStyle); PdfGridStyle gridStyle = new PdfGridStyle(); gridStyle.CellPadding = new PdfPaddings(2, 2, 2, 2); gridStyle.CellSpacing = 1; grid.Style = gridStyle; PdfStringFormat stringFormat = new PdfStringFormat(); stringFormat.Alignment = PdfTextAlignment.Left + 5; stringFormat.LineAlignment = PdfVerticalAlignment.Middle; //Apply string formatting for whole table for (int i = 0; i < grid.Columns.Count; i++) { grid.Columns[i].Format = stringFormat; } grid.ApplyBuiltinStyle(PdfGridBuiltinStyle.GridTable4Accent1); cellStyle.Font = new PdfStandardFont(PdfFontFamily.TimesRoman, 12f); cellStyle.TextBrush = new PdfSolidBrush(new PdfColor(131, 130, 136)); //Creates the layout format for grid PdfGridLayoutFormat layoutFormat = new PdfGridLayoutFormat(); // Creates layout format settings to allow the table pagination layoutFormat.Layout = PdfLayoutType.Paginate; //Draws the grid to the PDF page. PdfGridLayoutResult gridResult = grid.Draw(page, new RectangleF(new PointF(0, result.Bounds.Bottom + 40), new SizeF(graphics.ClientSize.Width, graphics.ClientSize.Height - 100)), layoutFormat); element = new PdfTextElement("Total Price:: ", timesRoman); element.Brush = new PdfSolidBrush(new PdfColor(0, 0, 0)); result = element.Draw(page, new PointF(graphics.ClientSize.Width - 200, gridResult.Bounds.Bottom + 10)); element = new PdfTextElement("Rs. " + order.OrderTotal.ToString("0.00"), timesRoman); element.Brush = new PdfSolidBrush(new PdfColor(0, 0, 0)); result = element.Draw(page, new PointF(graphics.ClientSize.Width - 140, result.Bounds.Bottom - 10)); element = new PdfTextElement("Total Product:: ", timesRoman); element.Brush = new PdfSolidBrush(new PdfColor(0, 0, 0)); result = element.Draw(page, new PointF(graphics.ClientSize.Width - 500, gridResult.Bounds.Bottom + 10)); element = new PdfTextElement(order.TotalItem.ToString("0"), timesRoman); element.Brush = new PdfSolidBrush(new PdfColor(0, 0, 0)); result = element.Draw(page, new PointF(graphics.ClientSize.Width - 420, result.Bounds.Bottom - 10)); element = new PdfTextElement("OrderDate:: ", timesRoman); element.Brush = new PdfSolidBrush(new PdfColor(0, 0, 0)); result = element.Draw(page, new PointF(10, gridResult.Bounds.Bottom + 10)); element = new PdfTextElement(order.OrderPlacedDate.ToString("dd/MM/yyyy"), timesRoman); element.Brush = new PdfSolidBrush(new PdfColor(0, 0, 0)); result = element.Draw(page, new PointF(60, result.Bounds.Bottom - 10)); element1.Font = new PdfStandardFont(PdfFontFamily.Helvetica, 20, PdfFontStyle.Bold); element1 = new PdfTextElement("Thanks,", subHeadingFont); element1.Brush = new PdfSolidBrush(new PdfColor(0, 0, 0)); result = element1.Draw(page, new PointF(graphics.ClientSize.Width - 130, result.Bounds.Bottom + 20)); element1 = new PdfTextElement("Prince Digital,Surat", subHeadingFont); element1.Brush = new PdfSolidBrush(new PdfColor(0, 0, 0)); result = element1.Draw(page, new PointF(graphics.ClientSize.Width - 130, result.Bounds.Bottom + 1)); MemoryStream stream = new MemoryStream(); document.Save(stream); //Set the position as '0'. stream.Position = 0; //Download the PDF document in the browser FileStreamResult fileStreamResult = new FileStreamResult(stream, "application/pdf"); string FileName = "order_" + order.OrderId + ".pdf"; fileStreamResult.FileDownloadName = FileName; return(fileStreamResult); }
private void GeneratePDF_Click(object sender, RoutedEventArgs e) { //Create a new PDF document. PdfDocument document = new PdfDocument(); //Add a page to the document. PdfPage page = document.Pages.Add(); //Create PDF graphics for the page. PdfGraphics graphics = page.Graphics; //Get the page width and height float pageWidth = page.GetClientSize().Width; float pageHeight = page.GetClientSize().Height; //Set the header height float headerHeight = 90; //Create brush with light blue color. PdfColor lightBlue = Color.FromArgb(255, 91, 126, 215); PdfBrush lightBlueBrush = new PdfSolidBrush(lightBlue); //Create brush with dark blue color. PdfColor darkBlue = Color.FromArgb(255, 65, 104, 209); PdfBrush darkBlueBrush = new PdfSolidBrush(darkBlue); //Create brush with white color. PdfBrush whiteBrush = new PdfSolidBrush(Color.FromArgb(255, 255, 255, 255)); //Get the font file stream from assembly. Stream fontStream = typeof(Invoice).GetTypeInfo().Assembly.GetManifestResourceStream("syncfusion.pdfdemos.winui.Assets.arial.ttf"); //Create PdfTrueTypeFont from stream with different size. PdfTrueTypeFont headerFont = new PdfTrueTypeFont(fontStream, 30, PdfFontStyle.Regular); PdfTrueTypeFont arialRegularFont = new PdfTrueTypeFont(fontStream, 18, PdfFontStyle.Regular); PdfTrueTypeFont arialBoldFont = new PdfTrueTypeFont(fontStream, 9, PdfFontStyle.Bold); //Create string format. PdfStringFormat format = new PdfStringFormat(); format.Alignment = PdfTextAlignment.Center; format.LineAlignment = PdfVerticalAlignment.Middle; float y = 0; float x = 0; //Set the margins of address. float margin = 30; //Set the line space. float lineSpace = 10; //Create border pen and draw the border to PDF page. PdfColor borderColor = Color.FromArgb(255, 142, 170, 219); PdfPen borderPen = new PdfPen(borderColor, 1f); graphics.DrawRectangle(borderPen, new RectangleF(0, 0, pageWidth, pageHeight)); //Create a new PdfGrid PdfGrid grid = new PdfGrid(); //Add five columns to the grid. grid.Columns.Add(5); //Create the header row of the grid. PdfGridRow[] headerRow = grid.Headers.Add(1); //Set style to the header row and set value to the header cells. headerRow[0].Style.BackgroundBrush = new PdfSolidBrush(new PdfColor(68, 114, 196)); headerRow[0].Style.TextBrush = PdfBrushes.White; headerRow[0].Cells[0].Value = "Product ID"; headerRow[0].Cells[0].StringFormat.Alignment = PdfTextAlignment.Center; headerRow[0].Cells[1].Value = "Product Name"; headerRow[0].Cells[2].Value = "Price ($)"; headerRow[0].Cells[3].Value = "Quantity"; headerRow[0].Cells[4].Value = "Total ($)"; //Add products to the grid table. AddProducts("CA-1098", "AWC Logo Cap", 8.99, 2, 17.98, grid); AddProducts("LJ-0192", "Long-Sleeve Logo Jersey,M", 49.99, 3, 149.97, grid); AddProducts("So-B909-M", "Mountain Bike Socks,M", 9.50, 2, 19, grid); AddProducts("LJ-0192", "Long-Sleeve Logo Jersey,M", 49.99, 4, 199.96, grid); AddProducts("FK-5136", "ML Fork", 175.49, 6, 1052.94, grid); AddProducts("HL-U509", "Sports-100 Helmet,Black", 34.99, 1, 34.99, grid); #region Header //Fill the header with light blue brush graphics.DrawRectangle(lightBlueBrush, new RectangleF(0, 0, pageWidth, headerHeight)); string title = "INVOICE"; //Specificy the bounds for total value. RectangleF headerTotalBounds = new RectangleF(400, 0, pageWidth - 400, headerHeight); //Measure the string size using font. SizeF textSize = headerFont.MeasureString(title); graphics.DrawString(title, headerFont, whiteBrush, new RectangleF(0, 0, textSize.Width + 50, headerHeight), format); //Draw rectangle in PDF page. graphics.DrawRectangle(darkBlueBrush, headerTotalBounds); //Draw the toal value to PDF page. graphics.DrawString("$" + GetTotalAmount(grid).ToString(), arialRegularFont, whiteBrush, new RectangleF(400, 0, pageWidth - 400, headerHeight + 10), format); //Create font from font stream. arialRegularFont = new PdfTrueTypeFont(fontStream, 9, PdfFontStyle.Regular); //Set bottom line alignment and draw the text to PDF page. format.LineAlignment = PdfVerticalAlignment.Bottom; graphics.DrawString("Amount", arialRegularFont, whiteBrush, new RectangleF(400, 0, pageWidth - 400, headerHeight / 2 - arialRegularFont.Height), format); #endregion //Measure the string size using font. SizeF size = arialRegularFont.MeasureString("Invoice Number: 2058557939"); y = headerHeight + margin; x = (pageWidth - margin) - size.Width; //Draw text to PDF page with provided font and location. graphics.DrawString("Invoice Number: 2058557939", arialRegularFont, PdfBrushes.Black, new PointF(x, y)); //Measure the string size using font. size = arialRegularFont.MeasureString("Date :" + DateTime.Now.ToString("dddd dd, MMMM yyyy")); x = (pageWidth - margin) - size.Width; y += arialRegularFont.Height + lineSpace; //Draw text to PDF page with provided font and location. graphics.DrawString("Date: " + DateTime.Now.ToString("dddd dd, MMMM yyyy"), arialRegularFont, PdfBrushes.Black, new PointF(x, y)); y = headerHeight + margin; x = margin; //Draw text to PDF page with provided font and location. graphics.DrawString("Bill To:", arialRegularFont, PdfBrushes.Black, new PointF(x, y)); y += arialRegularFont.Height + lineSpace; graphics.DrawString("Abraham Swearegin,", arialRegularFont, PdfBrushes.Black, new PointF(x, y)); y += arialRegularFont.Height + lineSpace; graphics.DrawString("United States, California, San Mateo,", arialRegularFont, PdfBrushes.Black, new PointF(x, y)); y += arialRegularFont.Height + lineSpace; graphics.DrawString("9920 BridgePointe Parkway,", arialRegularFont, PdfBrushes.Black, new PointF(x, y)); y += arialRegularFont.Height + lineSpace; graphics.DrawString("9365550136", arialRegularFont, PdfBrushes.Black, new PointF(x, y)); #region Grid //Set width to grid columns. grid.Columns[0].Width = 110; grid.Columns[1].Width = 150; grid.Columns[2].Width = 110; grid.Columns[3].Width = 70; grid.Columns[4].Width = 100; for (int i = 0; i < grid.Headers.Count; i++) { //Set height to the grid header row. grid.Headers[i].Height = 20; for (int j = 0; j < grid.Columns.Count; j++) { //Create string format for header cell. PdfStringFormat pdfStringFormat = new PdfStringFormat(); pdfStringFormat.LineAlignment = PdfVerticalAlignment.Middle; pdfStringFormat.Alignment = PdfTextAlignment.Left; //Set cell padding for header cell. if (j == 0 || j == 2) { grid.Headers[i].Cells[j].Style.CellPadding = new PdfPaddings(30, 1, 1, 1); } //Set string format to grid header cell. grid.Headers[i].Cells[j].StringFormat = pdfStringFormat; //Set font to the grid header cell. grid.Headers[i].Cells[j].Style.Font = arialBoldFont; } //Set value to the grid header cell. grid.Headers[0].Cells[0].Value = "Product ID"; } for (int i = 0; i < grid.Rows.Count; i++) { //Set height to the grid row. grid.Rows[i].Height = 23; for (int j = 0; j < grid.Columns.Count; j++) { //Create string format for grid row. PdfStringFormat pdfStringFormat = new PdfStringFormat(); pdfStringFormat.LineAlignment = PdfVerticalAlignment.Middle; pdfStringFormat.Alignment = PdfTextAlignment.Left; //Set cell padding for grid row cell. if (j == 0 || j == 2) { grid.Rows[i].Cells[j].Style.CellPadding = new PdfPaddings(30, 1, 1, 1); } //Set string format to grid row cell. grid.Rows[i].Cells[j].StringFormat = pdfStringFormat; //Set font to the grid row cell. grid.Rows[i].Cells[j].Style.Font = arialRegularFont; } } //Apply built-in table style to the grid. grid.ApplyBuiltinStyle(PdfGridBuiltinStyle.ListTable4Accent5); //Subscribing to begin cell layout event. grid.BeginCellLayout += Grid_BeginCellLayout; //Draw the PDF grid to PDF page and get the layout result. PdfGridLayoutResult result = grid.Draw(page, new PointF(0, y + 40)); //Using the layout result, continue to draw the text. y = result.Bounds.Bottom + lineSpace; format = new PdfStringFormat(); format.Alignment = PdfTextAlignment.Center; RectangleF bounds = new RectangleF(QuantityCellBounds.X, y, QuantityCellBounds.Width, QuantityCellBounds.Height); //Draw text to PDF page based on the layout result. page.Graphics.DrawString("Grand Total:", arialBoldFont, PdfBrushes.Black, bounds, format); //Draw the total amount value to PDF page based on the layout result. bounds = new RectangleF(TotalPriceCellBounds.X, y, TotalPriceCellBounds.Width, TotalPriceCellBounds.Height); page.Graphics.DrawString("$" + GetTotalAmount(grid).ToString(), arialBoldFont, PdfBrushes.Black, bounds); #endregion //Create border pen with custom dash style and draw the border to page. borderPen.DashStyle = PdfDashStyle.Custom; borderPen.DashPattern = new float[] { 3, 3 }; graphics.DrawLine(borderPen, new PointF(0, pageHeight - 100), new PointF(pageWidth, pageHeight - 100)); //Get the image file stream from assembly. Stream imageStream = typeof(Invoice).GetTypeInfo().Assembly.GetManifestResourceStream("syncfusion.pdfdemos.winui.Assets.AdventureWork.png"); //Create PDF bitmap image from stream. PdfBitmap bitmap = new PdfBitmap(imageStream); //Draw the image to PDF page. graphics.DrawImage(bitmap, new RectangleF(10, pageHeight - 90, 80, 80)); //Calculate the text position and draw the text to PDF page. y = pageHeight - 100 + margin; size = arialRegularFont.MeasureString("800 Interchange Blvd."); x = pageWidth - size.Width - margin; graphics.DrawString("800 Interchange Blvd.", arialRegularFont, PdfBrushes.Black, new PointF(x, y)); //Calculate the text position and draw the text to PDF page. y += arialRegularFont.Height + lineSpace; size = arialRegularFont.MeasureString("Suite 2501, Austin, TX 78721"); x = pageWidth - size.Width - margin; graphics.DrawString("Suite 2501, Austin, TX 78721", arialRegularFont, PdfBrushes.Black, new PointF(x, y)); //Calculate the text position and draw the text to PDF page. y += arialRegularFont.Height + lineSpace; size = arialRegularFont.MeasureString("Any Questions? [email protected]"); x = pageWidth - size.Width - margin; graphics.DrawString("Any Questions? [email protected]", arialRegularFont, PdfBrushes.Black, new PointF(x, y)); //Creating the stream object using (MemoryStream stream = new MemoryStream()) { //Save the document into stream document.Save(stream); document.Close(); stream.Position = 0; //Save the output stream as a file using file picker. PdfUtil.Save("Invoice.pdf", stream); } }
void Pdf_Clicked(object sender, EventArgs args) { PdfDocument document = new PdfDocument(); document.PageSettings.Orientation = PdfPageOrientation.Landscape; document.PageSettings.Margins.All = 50; PdfPage page = document.Pages.Add(); PdfGraphics g = page.Graphics; PdfTextElement element = new PdfTextElement(@"Syncfusion Software 2501 Aerial Center Parkway Suite 200 Morrisville, NC 27560 USA Tel +1 888.936.8638 Fax +1 919.573.0306"); element.Font = new PdfStandardFont(PdfFontFamily.TimesRoman, 12); element.Brush = new PdfSolidBrush(new PdfColor(89, 89, 93)); PdfLayoutResult result = element.Draw(page, new RectangleF(0, 0, page.Graphics.ClientSize.Width / 2, 200)); Stream imgStream = typeof(App).GetTypeInfo().Assembly.GetManifestResourceStream("XamarinIOInvoice.SyncfusionLogo.jpg"); PdfImage img = PdfImage.FromStream(imgStream); page.Graphics.DrawImage(img, new RectangleF(g.ClientSize.Width - 200, result.Bounds.Y, 190, 45)); PdfFont subHeadingFont = new PdfStandardFont(PdfFontFamily.TimesRoman, 14); g.DrawRectangle(new PdfSolidBrush(new PdfColor(126, 151, 173)), new RectangleF(0, result.Bounds.Bottom + 40, g.ClientSize.Width, 20)); PdfGrid grid = new PdfGrid(); grid.DataSource = GetDataSource(); PdfGridCellStyle cellStyle = new PdfGridCellStyle(); cellStyle.Borders.All = PdfPens.White; PdfGridRow header = grid.Headers[0]; PdfGridCellStyle headerStyle = new PdfGridCellStyle(); headerStyle.Borders.All = new PdfPen(new PdfColor(126, 151, 173)); headerStyle.BackgroundBrush = new PdfSolidBrush(new PdfColor(126, 151, 173)); headerStyle.TextBrush = PdfBrushes.White; headerStyle.Font = new PdfStandardFont(PdfFontFamily.TimesRoman, 14f, PdfFontStyle.Regular); for (int i = 0; i < header.Cells.Count; i++) { if (i == 0) { header.Cells[i].StringFormat = new PdfStringFormat(PdfTextAlignment.Left, PdfVerticalAlignment.Middle); } else { header.Cells[i].StringFormat = new PdfStringFormat(PdfTextAlignment.Right, PdfVerticalAlignment.Middle); } } header.ApplyStyle(headerStyle); cellStyle.Borders.Bottom = new PdfPen(new PdfColor(217, 217, 217), 0.70f); cellStyle.Font = new PdfStandardFont(PdfFontFamily.TimesRoman, 12f); cellStyle.TextBrush = new PdfSolidBrush(new PdfColor(131, 130, 136)); foreach (PdfGridRow row in grid.Rows) { row.ApplyStyle(cellStyle); for (int i = 0; i < row.Cells.Count; i++) { PdfGridCell cell = row.Cells[i]; if (i == 0) { cell.StringFormat = new PdfStringFormat(PdfTextAlignment.Left, PdfVerticalAlignment.Middle); } else { cell.StringFormat = new PdfStringFormat(PdfTextAlignment.Right, PdfVerticalAlignment.Middle); } if (i > 1) { float val = float.MinValue; float.TryParse(cell.Value.ToString(), out val); cell.Value = "$" + val.ToString(); } } } PdfGridLayoutFormat layoutFormat = new PdfGridLayoutFormat(); layoutFormat.Layout = PdfLayoutType.Paginate; PdfGridLayoutResult gridResult = grid.Draw(page, new RectangleF(new Syncfusion.Drawing.PointF(0, result.Bounds.Bottom + 40), new Syncfusion.Drawing.SizeF(g.ClientSize.Width, g.ClientSize.Height - 100)), layoutFormat); float pos = 0.0f; for (int i = 0; i < grid.Columns.Count - 1; i++) { pos += grid.Columns[i].Width; } PdfFont font = new PdfStandardFont(PdfFontFamily.TimesRoman, 14f); gridResult.Page.Graphics.DrawString("Total Due", font, new PdfSolidBrush(new PdfColor(126, 151, 173)), new RectangleF(new Syncfusion.Drawing.PointF(pos, gridResult.Bounds.Bottom + 20), new Syncfusion.Drawing.SizeF(grid.Columns[3].Width - pos, 20)), new PdfStringFormat(PdfTextAlignment.Right)); gridResult.Page.Graphics.DrawString("Thank you for your business!", new PdfStandardFont(PdfFontFamily.TimesRoman, 12), new PdfSolidBrush(new PdfColor(89, 89, 93)), new Syncfusion.Drawing.PointF(pos - 55, gridResult.Bounds.Bottom + 60)); pos += grid.Columns[4].Width; gridResult.Page.Graphics.DrawString("$13600", font, new PdfSolidBrush(new PdfColor(131, 130, 136)), new RectangleF(new Syncfusion.Drawing.PointF(pos, gridResult.Bounds.Bottom + 20), new Syncfusion.Drawing.SizeF(grid.Columns[4].Width - pos, 20)), new PdfStringFormat(PdfTextAlignment.Right)); MemoryStream data = new MemoryStream(); document.Save(data); document.Close(); DependencyService.Get <ISave>().SaveTextAsync("Invoice.pdf", "application/pdf", data); }
protected void btnDownload_Click(object sender, EventArgs e) { using (PdfDocument document = new PdfDocument()) { PdfPage page = document.Pages.Add(); PdfGraphics graphics = page.Graphics; //Drawing the logo image on the top PdfBitmap image = new PdfBitmap(Server.MapPath("~/Images/Logo.jpg")); graphics.DrawImage(image, 110, 0, 300, 100); //Drawing a rectangle below the logo in Coral color RectangleF bounds = new RectangleF(0, 100, graphics.ClientSize.Width, 30); PdfBrush brush = new PdfSolidBrush(new PdfColor(Color.Coral)); graphics.DrawRectangle(brush, bounds); //Loading data from Database into DataSet by calling the GetInvoiceDetails method ds = GetInvoiceDetails(ddlInvoice.SelectedValue); //Creating PdfTextElement objects and placing them on the document PdfFont textFont = new PdfStandardFont(PdfFontFamily.TimesRoman, 14); PdfTextElement element = new PdfTextElement("INVOICE ID: " + ddlInvoice.SelectedValue, textFont); element.Brush = PdfBrushes.White; PdfLayoutResult result = element.Draw(page, new PointF(10, bounds.Top + 8)); string invoiceDate = "INVOICE DATE: " + ds.Tables[0].Rows[0][0]; SizeF textSize = textFont.MeasureString(invoiceDate); element = new PdfTextElement(invoiceDate, textFont); element.Brush = PdfBrushes.White; result = element.Draw(page, bounds.Width - textSize.Width - 10, bounds.Top + 8); element = new PdfTextElement("BILL TO:", textFont); element.Brush = PdfBrushes.Blue; result = element.Draw(page, 10, result.Bounds.Bottom + 20); //byte[] imageData = (byte[])ds.Tables[1].Rows[0][3]; //MemoryStream ms = new MemoryStream(imageData); //PdfBitmap customerImage = new PdfBitmap(ms); //graphics.DrawImage(customerImage, 410, result.Bounds.Bottom - 14, 100, 100); element = new PdfTextElement(ds.Tables[1].Rows[0][0].ToString(), textFont); result = element.Draw(page, 15, result.Bounds.Bottom); element = new PdfTextElement(ds.Tables[1].Rows[0][1].ToString(), textFont); result = element.Draw(page, 15, result.Bounds.Bottom); element = new PdfTextElement(ds.Tables[1].Rows[0][2].ToString(), textFont); result = element.Draw(page, 15, result.Bounds.Bottom); PdfPen linePen = new PdfPen(new PdfColor(Color.Coral), 0.75f); PointF startPoint = new PointF(0, result.Bounds.Bottom + 50); PointF endPoint = new PointF(graphics.ClientSize.Width, result.Bounds.Bottom + 50); graphics.DrawLine(linePen, startPoint, endPoint); DataTable invoiceDetails = ds.Tables[2]; PdfGrid grid = new PdfGrid(); grid.DataSource = invoiceDetails; PdfGridCellStyle headerStyle = new PdfGridCellStyle(); headerStyle.BackgroundBrush = new PdfSolidBrush(new PdfColor(126, 151, 173)); headerStyle.TextBrush = PdfBrushes.White; headerStyle.Font = new PdfStandardFont(PdfFontFamily.TimesRoman, 14f, PdfFontStyle.Regular); PdfGridRow header = grid.Headers[0]; for (int i = 0; i < header.Cells.Count; i++) { header.Cells[i].StringFormat = new PdfStringFormat(PdfTextAlignment.Center, PdfVerticalAlignment.Middle); } header.ApplyStyle(headerStyle); PdfGridColumnCollection columns = grid.Columns; columns[2].Format.Alignment = PdfTextAlignment.Right; columns[3].Format.Alignment = PdfTextAlignment.Right; columns[4].Format.Alignment = PdfTextAlignment.Right; PdfGridStyle cellStyle = new PdfGridStyle(); cellStyle.Font = new PdfStandardFont(PdfFontFamily.TimesRoman, 12f, PdfFontStyle.Regular); cellStyle.TextBrush = PdfBrushes.DarkGreen; grid.Style = cellStyle; PdfGridLayoutResult gridResult = grid.Draw(page, new RectangleF(new PointF(0, result.Bounds.Bottom + 60), new SizeF(graphics.ClientSize.Width, graphics.ClientSize.Height - 100))); linePen = new PdfPen(new PdfColor(Color.Coral), 0.75f); startPoint = new PointF((gridResult.Bounds.Width / 5) * 4, gridResult.Bounds.Bottom + 20); endPoint = new PointF(graphics.ClientSize.Width, gridResult.Bounds.Bottom + 20); graphics.DrawLine(linePen, startPoint, endPoint); element = new PdfTextElement("TotalBill:", textFont); result = element.Draw(page, new PointF((gridResult.Bounds.Width / 5) * 3, gridResult.Bounds.Bottom + 25)); string billAmount = ds.Tables[3].Rows[0][0].ToString(); textSize = textFont.MeasureString(billAmount); element = new PdfTextElement(billAmount, textFont); result = element.Draw(page, new PointF(graphics.ClientSize.Width - textSize.Width, gridResult.Bounds.Bottom + 25)); linePen = new PdfPen(new PdfColor(Color.Coral), 0.75f); startPoint = new PointF((gridResult.Bounds.Width / 5) * 4, gridResult.Bounds.Bottom + 45); endPoint = new PointF(graphics.ClientSize.Width, gridResult.Bounds.Bottom + 45); graphics.DrawLine(linePen, startPoint, endPoint); string signature = "Signature"; textSize = textFont.MeasureString(signature); element = new PdfTextElement(signature, textFont); result = element.Draw(page, new PointF(graphics.ClientSize.Width - textSize.Width - 20, gridResult.Bounds.Bottom + 100)); linePen = new PdfPen(new PdfColor(Color.Coral), 0.75f); startPoint = new PointF(0, graphics.ClientSize.Height - 25); endPoint = new PointF(graphics.ClientSize.Width, graphics.ClientSize.Height - 25); graphics.DrawLine(linePen, startPoint, endPoint); graphics.DrawString("13-74/292, Diamond Towers, Jubliee Hills - 33. Phone: 2381 9999, Fax: 2381 8899", new PdfStandardFont(PdfFontFamily.Courier, 10), PdfBrushes.DarkCyan, new PointF(0, graphics.ClientSize.Height - 20)); graphics.DrawString("Email: [email protected], WebSite: www.paintcompany.com", new PdfStandardFont(PdfFontFamily.Courier, 10), PdfBrushes.DarkCyan, new PointF(0, graphics.ClientSize.Height - 10)); PdfGridLayoutFormat layoutFormat = new PdfGridLayoutFormat(); layoutFormat.Layout = PdfLayoutType.Paginate; document.Save("Invoice.pdf", HttpContext.Current.Response, HttpReadType.Save); }; }