//// This code is part of Document Solutions for PDF .NET demos.// Copyright (c) MESCIUS inc. All rights reserved.//usingSystem;usingSystem.IO;usingSystem.Drawing;usingGrapeCity.Documents.Pdf; namespaceDsPdfWeb.Demos{// This sample shows how to render an HTML string.//// Adding DsHtml to your projects:// - Public classes and extension methods that enable rendering HTML// are provided by the GrapeCity.Documents.Html (DsHtml) package.// - DsHtml supports Windows, macOS and Linux platforms.//// Dealing with errors when using DsHtml:// - If DsHtml is not doing what you expect (e.g. rendering HTML to PDF// produces an invalid PDF), check the content of the string property// GcHtmlBrowser.ErrorLog after the call to SaveAsPdf returns,// it may explain why the error occurred.//// DsHtml uses a local copy of a Chromium-based browser.// You can either rely on Google Chrome or Microsoft Edge browsers// installed in the operating system, or download an instance of// the Chromium browser to the application's local folder or some shared folder.// If you know the custom path to an installed Chromium-based browser,// use it instead of the above-mentioned options.// The BrowserFetcher class can be used to install or fetch an already// installed browser, you can then use the BrowserFetcher.GetDownloadedPath()// to get the path to the browser. See the BrowserFetcher class for methods// retrieving the path to Chrome or Edge executables and for other// options and methods that help to download Chromium browser// to a local folder if necessary.//// See the Util.NewHtmlBrowser() utility method used by this sample for a// implementation example.//// The above notes apply to any project that uses DsHtml.publicclassHelloWorldHtml {publicintCreatePDF(Stream stream) {// HTML code that represents the content to render:var html = "<!DOCTYPE html>" +"<html>" +"<head>" +"<style>" +"span.bold {" +" font-weight: bold;" +"}" +"p.round {" +" font: 36px arial, sans-serif;" +" color: DarkSlateBlue;" +" border: 4px solid SlateBlue;" +" border-radius: 16px;" +" padding: 3px 5px 3px 5px;" +" text-shadow: 3px 2px LightSkyBlue;" +"}" +"p.note {" +" font: 16px arial, sans-serif;" +" color: DarkSlateBlue;" +"}" +"</style>" +"</head>" +"<body>" +"<p class='round'>Hello, World, from <span class='bold'>DsHtml</span>!</p>" +"<p class='note'>This demo shows how to use <strong>DsHtml</strong> to render HTML to PDF or images." +"Check out the source code of this demo for details on how to configure and use <strong>DsHtml</strong>.</p>" +"</body>"; // Create a new PDF document, add a page, get graphics to draw on:var doc = newGcPdfDocument();var page = doc.NewPage();var g = page.Graphics; try {// Create an instance of GcHtmlBrowser that is used to render HTML:usingvar browser = Common.Util.NewHtmlBrowser(); // Render HTML.// The return value from DrawHtml() indicates whether anything has been rendered.// The output parameter 'size' returns the actual size of the rendered content.var ok = g.DrawHtml(browser, html, 72, 72,newHtmlToPdfFormat(false) { MaxPageWidth = 6.5f, MaxPageHeight = 9f },outSizeF size); if (ok) {// If anything has been rendered, draw an extra border around the rendered content:var rc = newRectangleF(72 - 4, 72 - 4, size.Width + 8, size.Height + 8); g.DrawRoundRect(rc, 8, Color.PaleVioletRed); }elseif (!string.IsNullOrEmpty(browser.ErrorLog)) {// Optional diagnostics that may be useful when diagnosing browser errors.// Note that the error log may contain harmless information messages// even if there were no errors, so testing whether the error log is empty// should not be used as the error indicator.Common.Util.AddNote(browser.ErrorLog, page, newRectangleF(72, 72 + size.Height + 36, page.Size.Width - 144, page.Size.Height - size.Height - 108)); } }catch (Exception ex) {thrownewException($"Error:\n{ex.Message}"); } // Done: doc.Save(stream);return doc.Pages.Count; } }}