SelectPdf for .NET - Get Web Elements Location in PDF with Html to Pdf Converter - C# / ASP.NET MVC Sample

This sample shows how the html to pdf converter can locate certain web elements in the generated PDF using SelectPdf Pdf Library for .NET.

The web elements are defined using CSS selectors. For example, the selector for all the H1 elements is "H1", the selector for all the elements with the CSS class name 'myclass' is "*.myclass" and the selector for the elements with the id 'myid' is "*#myid". Read more about CSS selectors here.

The specified web elements will be marked/highlighted in PDF with a blue rectangle.

Url:


Web elements:



Sample Code C#



using System.Drawing;
using System.Web.Mvc;

namespace SelectPdf.Samples.Controllers
{
    public class WebElementsLocationController : Controller
    {
        // GET: WebElementsLocation
        public ActionResult Index()
        {
            return View();
        }

        [HttpPost]
        public ActionResult SubmitAction(FormCollection fields)
        {
            // instantiate a html to pdf converter object
            HtmlToPdf converter = new HtmlToPdf();

            // set the css selectors for the web elements
            // whose positions will be retrieved
            converter.Options.WebElementsMappingOptions.CssSelectors =
                fields["TxtElements"].Split(new char[] { ',' });

            // create a new pdf document converting an url
            PdfDocument doc = converter.ConvertUrl(fields["TxtUrl"]);

            // get all web elements and mark/highlight them with a green rectangle
            foreach (WebElement element in
                converter.Options.WebElementsMappingOptions.Result)
            {
                // each web element has several rendering rectangles 
                // (if it is displayed in more than 1 page)
                foreach (WebElementPdfRectangle webElementRectangle
                    in element.PdfRectangles)
                {
                    // get the PDF page
                    PdfPage page = doc.Pages[webElementRectangle.PageIndex];
                    RectangleF rectangle = webElementRectangle.Rectangle;

                    // highlight the HTML element
                    PdfRectangleElement blueRectangle = new PdfRectangleElement(
                        rectangle.X, rectangle.Y,
                        rectangle.Width, rectangle.Height);
                    blueRectangle.ForeColor = Color.Blue;

                    page.Add(blueRectangle);
                }
            }

            // save pdf document
            byte[] pdf = doc.Save();

            // close pdf document
            doc.Close();

            // return resulted pdf document
            FileResult fileResult = new FileContentResult(pdf, "application/pdf");
            fileResult.FileDownloadName = "Document.pdf";
            return fileResult;
        }
    }
}