diff --git a/File-Formats/PDF/Create-PDF-file-in-MaUI.md b/File-Formats/PDF/Create-PDF-file-in-MaUI.md
index 121456f7f..3fe5beba7 100644
--- a/File-Formats/PDF/Create-PDF-file-in-MaUI.md
+++ b/File-Formats/PDF/Create-PDF-file-in-MaUI.md
@@ -65,12 +65,13 @@ Step 5: Include the following namespaces in the *MainWindow.xaml.cs* file.
{% highlight c# tabtitle="C#" %}
-using Syncfusion.Pdf;
-using Syncfusion.Pdf.Graphics;
-using Syncfusion.Pdf.Grid;
-using Syncfusion.Drawing;
-using System.Reflection;
-using System.Xml.Linq;
+ using CreatePdfDemoSample.Services;
+ using Syncfusion.Pdf;
+ using Syncfusion.Pdf.Graphics;
+ using Syncfusion.Pdf.Grid;
+ using Syncfusion.Drawing;
+ using System.Reflection;
+ using System.Xml.Linq;
{% endhighlight %}
@@ -84,260 +85,300 @@ Step 6: Add a new action method *createPdf_Click* in *MainWindow.xaml.cs* and in
{% highlight c# tabtitle="C#" %}
-//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;
-RectangleF TotalPriceCellBounds = RectangleF.Empty;
-RectangleF QuantityCellBounds = RectangleF.Empty;
-//Set the header height.
-float headerHeight = 90;
-//Create a brush with a light blue color.
-PdfColor lightBlue = Color.FromArgb(255, 91, 126, 215);
-PdfBrush lightBlueBrush = new PdfSolidBrush(lightBlue);
-//Create a brush with a dark blue color.
-PdfColor darkBlue = Color.FromArgb(255, 65, 104, 209);
-PdfBrush darkBlueBrush = new PdfSolidBrush(darkBlue);
-//Create a brush with a white color.
-PdfBrush whiteBrush = new PdfSolidBrush(Color.FromArgb(255, 255, 255, 255));
-
-//Get the font file stream from the assembly.
-Assembly assembly = typeof(MainPage).GetTypeInfo().Assembly;
-string basePath = "CreatePdfDemoSample.Resources.Fonts.";
-Stream fontStream = assembly.GetManifestResourceStream(basePath + "OpenSans-Regular.ttf");
-//Create a PdfTrueTypeFont from the stream with the different sizes.
-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 a string format.
-PdfStringFormat format = new PdfStringFormat();
-format.Alignment = PdfTextAlignment.Center;
-format.LineAlignment = PdfVerticalAlignment.Middle;
-
-float y = 0;
-float x = 0;
-//Set the margins of the address.
-float margin = 30;
-//Set the line space.
-float lineSpace = 10;
-//Create a border pen and draw the border to on the 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 a light blue brush.
-graphics.DrawRectangle(lightBlueBrush, new RectangleF(0, 0, pageWidth, headerHeight));
-string title = "INVOICE";
-//Specificy the bounds for the total value.
-RectangleF headerTotalBounds = new RectangleF(400, 0, pageWidth - 400, headerHeight);
-//Measure the string size using the font.
-SizeF textSize = headerFont.MeasureString(title);
-graphics.DrawString(title, headerFont, whiteBrush, new RectangleF(0, 0, textSize.Width + 50, headerHeight), format);
-//Draw a rectangle in the PDF page.
-graphics.DrawRectangle(darkBlueBrush, headerTotalBounds);
-//Draw the total value to the PDF page.
-graphics.DrawString("$" + GetTotalAmount(grid).ToString(), arialRegularFont, whiteBrush, new RectangleF(400, 0, pageWidth - 400, headerHeight + 10), format);
-//Create a font from the font stream.
-arialRegularFont = new PdfTrueTypeFont(fontStream, 9, PdfFontStyle.Regular);
-//Set the bottom line alignment and draw the text to the 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 the font.
-SizeF size = arialRegularFont.MeasureString("Invoice Number: 2058557939");
-y = headerHeight + margin;
-x = (pageWidth - margin) - size.Width;
-//Draw text to a PDF page with the provided font and location.
-graphics.DrawString("Invoice Number: 2058557939", arialRegularFont, PdfBrushes.Black, new PointF(x, y));
-//Measure the string size using the font.
-size = arialRegularFont.MeasureString("Date :" + DateTime.Now.ToString("dddd dd, MMMM yyyy"));
-x = (pageWidth - margin) - size.Width;
-y += arialRegularFont.Height + lineSpace;
-//Draw text to a PDF page with the 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 a PDF page with the 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 the width of theto 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 the height ofto the grid header row.
- grid.Headers[i].Height = 20;
- for (int j = 0; j < grid.Columns.Count; j++)
+ //Create a new PDF document.
+ PdfDocument document = new();
+ //Add a page to the document.
+ PdfPage page = document.Pages.Add();
+ //Create PDF graphics for the page.
+ PdfGraphics graphics = page.Graphics;
+
+ RectangleF TotalPriceCellBounds = RectangleF.Empty;
+ RectangleF QuantityCellBounds = RectangleF.Empty;
+
+ //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.
+ Assembly assembly = typeof(MainPage).GetTypeInfo().Assembly;
+ string basePath = "CreatePdfDemoSample.Resources.Pdf.";
+ Stream fontStream = assembly.GetManifestResourceStream(basePath + "arial.ttf");
+
+ //Create PdfTrueTypeFont from stream with different size.
+ PdfTrueTypeFont headerFont = new(fontStream, 30, PdfFontStyle.Regular);
+ PdfTrueTypeFont arialRegularFont = new(fontStream, 18, PdfFontStyle.Regular);
+ PdfTrueTypeFont arialBoldFont = new(fontStream, 9, PdfFontStyle.Bold);
+
+ //Create string format.
+ PdfStringFormat format = new();
+ 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(borderColor, 1f);
+ graphics.DrawRectangle(borderPen, new RectangleF(0, 0, pageWidth, pageHeight));
+
+ //Create a new PdfGrid
+ PdfGrid grid = new();
+
+ //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(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++)
{
- //Create a string format for the 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 a string format to the 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 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.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";
}
- //Set the value ofto the grid header cell.
- grid.Headers[0].Cells[0].Value = "Product ID";
-}
-for (int i = 0; i < grid.Rows.Count; i++)
-{
- //Set the height ofto the grid row.
- grid.Rows[i].Height = 23;
- for (int j = 0; j < grid.Columns.Count; j++)
+ for (int i = 0; i < grid.Rows.Count; i++)
{
- //Create a string format for the 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);
-
- //Seta string format to the grid row cell.
- grid.Rows[i].Cells[j].StringFormat = pdfStringFormat;
- //Set the font to the grid row cell.
- grid.Rows[i].Cells[j].Style.Font = arialRegularFont;
+ //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.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);
-//Subscribeing to begin the cell layout event.
-grid.BeginCellLayout += Grid_BeginCellLayout;
-//Draw the PDF grid to the 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 the text to the PDF page based on the layout result.
-page.Graphics.DrawString("Grand Total:", arialBoldFont, PdfBrushes.Black, bounds, format);
-//Draw the total amount value to the 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);
-
-//Create a border pen with the custom dash style and draw the border to the page.
-borderPen.DashStyle = PdfDashStyle.Custom;
-borderPen.DashPattern = new float[] { 3, 3 };
-graphics.DrawLine(borderPen, new PointF(0, pageHeight - 100), new PointF(pageWidth, pageHeight - 100));
-
-basePath = "CreatePdfDemoSample.Resources.Images.";
-//Get the image file stream from the assembly.
-Stream imageStream = assembly.GetManifestResourceStream(basePath + "AdventureWork.png");
-
-//Create a PDF bitmap image from the stream.
-PdfBitmap bitmap = new PdfBitmap(imageStream);
-//Draw the image to the PDF page.
-graphics.DrawImage(bitmap, new RectangleF(10, pageHeight - 90, 80, 80));
-
-//Calculate the text position and draw the text to the 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 the 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 the PDF page.
-y += arialRegularFont.Height + lineSpace;
-size = arialRegularFont.MeasureString("Any Questions? support@adventure-works.com");
-x = pageWidth - size.Width - margin;
-graphics.DrawString("Any Questions? support@adventure-works.com", arialRegularFont, PdfBrushes.Black, new PointF(x, y));
-
-using MemoryStream ms = new ();
-//Saves the presentation to the memory stream.
-document.Save(ms);
-//Close the PDF document
-document.Close(true);
-ms.Position = 0;
-//Saves the memory stream as file.
-SaveService saveService = new ();
-saveService.SaveAndView("Invoice.pdf", "application/pdf", ms);
-
-#region Helper Methods
-//Create and row for the grid.
-void AddProducts(string productId, string productName, double price, int quantity, double total, PdfGrid grid)
-{
- //Add a new row and set the product value to the grid row cells.
- PdfGridRow row = grid.Rows.Add();
- row.Cells[0].Value = productId;
- row.Cells[1].Value = productName;
- row.Cells[2].Value = price.ToString();
- row.Cells[3].Value = quantity.ToString();
- row.Cells[4].Value = total.ToString();
-}
-///
-/// Get the Total amount of the purcharsed items.
-///
-private float GetTotalAmount(PdfGrid grid)
-{
- float Total = 0f;
- for (int i = 0; i < grid.Rows.Count; i++)
+ //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
+ {
+ Alignment = PdfTextAlignment.Center
+ };
+ RectangleF bounds = new(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 = assembly.GetManifestResourceStream(basePath + "AdventureWork.png");
+
+ //Create PDF bitmap image from stream.
+ PdfBitmap bitmap = new(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? support@adventure-works.com");
+ x = pageWidth - size.Width - margin;
+ graphics.DrawString("Any Questions? support@adventure-works.com", arialRegularFont, PdfBrushes.Black, new PointF(x, y));
+
+
+ //Add a new blank PDF page.
+ PdfPage page1 = document.Pages.Add();
+
+ //Draw the image to the PDF page.
+ page1.Graphics.DrawImage(bitmap, 0, 0, 200, 200);
+
+ using MemoryStream ms = new();
+ //Save the PDF document to MemoryStream.
+ document.Save(ms);
+ //Close the PDF document.
+ document.Close(true);
+ ms.Position = 0;
+ //Saves the memory stream as file using the SaveService instance.
+ SaveService save = new SaveService();
+ save.SaveAndView("output.pdf", "application/pdf", ms);
+
+ void Grid_BeginCellLayout(object sender, PdfGridBeginCellLayoutEventArgs args)
+ {
+ PdfGrid grid = sender as PdfGrid;
+ if (args.CellIndex == grid.Columns.Count - 1)
+ {
+ //Get the bounds of price cell in grid row.
+ TotalPriceCellBounds = args.Bounds;
+ }
+ else if (args.CellIndex == grid.Columns.Count - 2)
+ {
+ //Get the bounds of quantity cell in grid row.
+ QuantityCellBounds = args.Bounds;
+ }
+ }
+ #region Helper Methods
+ //Create and row for the grid.
+ void AddProducts(string productId, string productName, double price, int quantity, double total, PdfGrid grid)
{
- string cellValue = grid.Rows[i].Cells[grid.Columns.Count - 1].Value.ToString();
- float result = float.Parse(cellValue, System.Globalization.CultureInfo.InvariantCulture);
- Total += result;
+ //Add a new row and set the product value to grid row cells.
+ PdfGridRow row = grid.Rows.Add();
+ row.Cells[0].Value = productId;
+ row.Cells[1].Value = productName;
+ row.Cells[2].Value = price.ToString();
+ row.Cells[3].Value = quantity.ToString();
+ row.Cells[4].Value = total.ToString();
}
- return Total;
+ ///
+ /// Get the Total amount of purcharsed items.
+ ///
+ private float GetTotalAmount(PdfGrid grid)
+ {
+ float Total = 0f;
+ for (int i = 0; i < grid.Rows.Count; i++)
+ {
+ string cellValue = (grid.Rows[i].Cells[grid.Columns.Count - 1].Value as string)!.ToString();
+ float result = float.Parse(cellValue, System.Globalization.CultureInfo.InvariantCulture);
+ Total += result;
+ }
+ return Total;
+
+ }
+ #endregion
+
-}
-#endregion
{% endhighlight %}