Sample code · C#
using System; using System.Collections.Generic; using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc.RazorPages; using Microsoft.AspNetCore.Mvc.Rendering; using SelectPdf.Universal; namespace SelectPdf.Samples.Pages { public class AutomaticBookmarksModel : PageModel { public void OnGet() { DdlRenderingEngine = "Chromium"; TxtUrl = Helper.WWWRoot(Request) + Url.Content("~/files/document.html"); } [BindProperty] public string TxtUrl { get; set; } [BindProperty] public string DdlRenderingEngine { get; set; } public List<SelectListItem> RenderingEngines { get; } = new List<SelectListItem> { new SelectListItem { Value = "Chromium", Text = "Chromium" }, }; [BindProperty] public string TxtElements { get; set; } [BindProperty] public bool ChkHierarchical { get; set; } = true; public IActionResult OnPost() { RenderingEngine renderingEngine = SampleForm.ParseEnum(DdlRenderingEngine, RenderingEngine.Chromium); // instantiate a html to pdf converter object HtmlToPdf converter = new HtmlToPdf(); converter.Options.NavigationTimeout = Startup.NavigationTimeout; // set the css selectors for the automatic bookmarks converter.Options.RenderingEngine = renderingEngine; converter.Options.PdfBookmarkOptions.CssSelectors = TxtElements.Split(new char[] { ',' }); // nest the bookmarks in the order of the selectors: with "h1, h2" every h2 bookmark // is placed under the h1 bookmark that precedes it converter.Options.PdfBookmarkOptions.HierarchicalBookmarks = ChkHierarchical; // display the bookmarks when the document is opened in a viewer converter.Options.ViewerPreferences.PageMode = PdfViewerPageMode.UseOutlines; // create a new pdf document converting an url PdfDocument doc = converter.ConvertUrl(TxtUrl); // 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; } } }