Get DrawObject and Bound while rendering to PDF using DrawObjectEventHandler class
Possible Usage Scenarios
Aspose.Cells provides an abstract class DrawObjectEventHandler which has a Draw() method. The user can implement DrawObjectEventHandler and utilize the Draw() method to get the DrawObject and Bound while rendering Excel to PDF or Image. Here is a brief description of the parameters of the Draw() method.
-
drawObject: DrawObject will be initialized and returned when rendering
-
x: Left of DrawObject
-
y: Top of DrawObject
-
width: Width of DrawObject
-
height: Height of DrawObject
If you are rendering Excel file to PDF, then you can utilize DrawObjectEventHandler class with PdfSaveOptions.DrawObjectEventHandler. Similarly, if you are rendering Excel file to Image, you can utilize DrawObjectEventHandler class with ImageOrPrintOptions.DrawObjectEventHandler.
Get DrawObject and Bound while rendering to Pdf using DrawObjectEventHandler class
Please see the following sample code. It loads the sample Excel file and saves it as output PDF. While rendering to PDF, it utilizes PdfSaveOptions.DrawObjectEventHandler property and captures the DrawObject and Bound of existing cells and objects e.g. images etc. If the DrawObject type is Cell, it prints its Bound and StringValue. And if the DrawObject type is Image, it prints its Bound and Shape Name. Please see the console output of the sample code given below for more help.
Sample Code
// For complete examples and data files, please go to https://github.com/aspose-cells/Aspose.Cells-for-.NET | |
using System; | |
using System.Collections.Generic; | |
using System.Linq; | |
using System.Text; | |
using Aspose.Cells.Rendering; | |
namespace Aspose.Cells.Examples.CSharp.Rendering | |
{ | |
class GetDrawObjectAndBoundUsingDrawObjectEventHandler | |
{ | |
//Implement the concrete class of DrawObjectEventHandler | |
class clsDrawObjectEventHandler : DrawObjectEventHandler | |
{ | |
public override void Draw(DrawObject drawObject, float x, float y, float width, float height) | |
{ | |
Console.WriteLine(""); | |
//Print the coordinates and the value of Cell object | |
if (drawObject.Type == DrawObjectEnum.Cell) | |
{ | |
Console.WriteLine("[X]: " + x + " [Y]: " + y + " [Width]: " + width + " [Height]: " + height + " [Cell Value]: " + drawObject.Cell.StringValue); | |
} | |
//Print the coordinates and the shape name of Image object | |
if (drawObject.Type == DrawObjectEnum.Image) | |
{ | |
Console.WriteLine("[X]: " + x + " [Y]: " + y + " [Width]: " + width + " [Height]: " + height + " [Shape Name]: " + drawObject.Shape.Name); | |
} | |
Console.WriteLine("----------------------"); | |
} | |
} | |
public static void Run() | |
{ | |
//Load sample Excel file | |
Workbook wb = new Workbook("sampleGetDrawObjectAndBoundUsingDrawObjectEventHandler.xlsx"); | |
//Specify Pdf save options | |
PdfSaveOptions opts = new PdfSaveOptions(); | |
//Assign the instance of DrawObjectEventHandler class | |
opts.DrawObjectEventHandler = new clsDrawObjectEventHandler(); | |
//Save to Pdf format with Pdf save options | |
wb.Save("outputGetDrawObjectAndBoundUsingDrawObjectEventHandler.pdf", opts); | |
} | |
} | |
} |
Console Output
[X]: 153.6035 [Y]: 82.94118 [Width]: 103.2035 [Height]: 14.47059 [Cell Value]: This is sample text.
----------------------
[X]: 267.6917 [Y]: 153.4853 [Width]: 160.4491 [Height]: 128.0647 [Shape Name]: Sun
----------------------