In the HTML document you can define different styles for different media types using @media rules. For example you can have a style for screen with background colors and images and a style for printing without background colors or images to save ink. EVO HTML to PDF Converter allows you to select the media type for which you want to render the HTML document using the HtmlToPdfConverterMediaType property.
Code Sample - Select Media Type When Converting HTML to PDF
C#
using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Hosting; // Use EVO PDF Namespace using EvoPdfClient; namespace EvoHtmlToPdfDemo.Controllers.HTML_to_PDF.Media_Types { public class Select_Screen_or_Print_Media_TypeController : Controller { private readonly Microsoft.AspNetCore.Hosting.IWebHostEnvironment m_hostingEnvironment; public Select_Screen_or_Print_Media_TypeController(IWebHostEnvironment hostingEnvironment) { m_hostingEnvironment = hostingEnvironment; } private void SetCurrentViewData() { ViewData["ContentRootPath"] = m_hostingEnvironment.ContentRootPath + "/wwwroot"; HttpRequest request = this.ControllerContext.HttpContext.Request; UriBuilder uriBuilder = new UriBuilder(); uriBuilder.Scheme = request.Scheme; uriBuilder.Host = request.Host.Host; if (request.Host.Port != null) uriBuilder.Port = (int)request.Host.Port; uriBuilder.Path = request.PathBase.ToString() + request.Path.ToString(); uriBuilder.Query = request.QueryString.ToString(); ViewData["CurrentPageUrl"] = uriBuilder.Uri.AbsoluteUri; } public ActionResult Index() { SetCurrentViewData(); return View(); } [HttpPost] public ActionResult ConvertHtmlToPdf(IFormCollection collection) { // Get the server options string serverIP = collection["textBoxServerIP"]; uint serverPort = uint.Parse(collection["textBoxServerPort"]); string servicePassword = collection["textBoxServicePassword"]; bool useServicePassword = servicePassword.Length > 0; bool useTcpService = collection["ServerType"] == "radioButtonUseTcpService"; string webServiceUrl = collection["textBoxWebServiceUrl"]; // Create the HTML to PDF converter object HtmlToPdfConverter htmlToPdfConverter = null; if (useTcpService) htmlToPdfConverter = new HtmlToPdfConverter(serverIP, serverPort); else htmlToPdfConverter = new HtmlToPdfConverter(true, webServiceUrl); // Set optional service password if (useServicePassword) htmlToPdfConverter.ServicePassword = servicePassword; // Set license key received after purchase to use the converter in licensed mode // Leave it not set to use the converter in demo mode htmlToPdfConverter.LicenseKey = "4W9+bn19bn5ue2B+bn1/YH98YHd3d3c="; // Set an adddional delay in seconds to wait for JavaScript or AJAX calls after page load completed // Set this property to 0 if you don't need to wait for such asynchcronous operations to finish htmlToPdfConverter.ConversionDelay = 2; // Set the media type for which to render HTML to PDF htmlToPdfConverter.MediaType = collection["MediaType"] == "printMediaTypeRadioButton" ? "print" : "screen"; byte[] outPdfBuffer = null; if (collection["HtmlPageSource"] == "convertHtmlRadioButton") { string htmlWithForm = collection["htmlStringTextBox"]; string baseUrl = collection["baseUrlTextBox"]; // Convert a HTML string to a PDF document for the selected media type outPdfBuffer = htmlToPdfConverter.ConvertHtml(htmlWithForm, baseUrl); } else { string url = collection["urlTextBox"]; // Convert the HTML page to a PDF document for the selected media type outPdfBuffer = htmlToPdfConverter.ConvertUrl(url); } // Send the PDF file to browser FileResult fileResult = new FileContentResult(outPdfBuffer, "application/pdf"); fileResult.FileDownloadName = "Select_Screen_or_Print_Media_Type.pdf"; return fileResult; } } }
HTML Code with @media Rules
XML
<!DOCTYPE html> <html> <head> <title>Media Type Rules</title> <style type="text/css"> /* Set the body text family and font size both for screen and print*/ body { width: 1000px; margin: 10px; font-family: 'Times New Roman'; font-size: 18px; } /* Set the title text font size and weight both for screen and print*/ .title { font-size: 24px; font-weight: bold; } @media screen { /* Set a background color only when the HTML page is displayed on screen*/ body { background-color: aliceblue; } /* Use blue to write the text on screen*/ p { color: darkblue; } } @media print { /* Hide images when priting*/ img { display: none; } /* Use black to write the text on screen*/ p { color: black; } } @media screen,print { /* Set the paragraph text family and font size both for screen and print*/ p { font-family: 'Times New Roman'; font-size: 20px; } } </style> </head> <body> <span class="title">Media Type Rules</span><br /> <br /> This document have different styles when it is displayed on the screen and when it is printed. You can instruct the converter to use the style you want setting its <i>MediaType</i> property.<br /> <br /> <b>The image below is visible only when the selected media type is 'screen' and is hidden when the selected media type is 'print'</b>:<br /> <br /> <img alt="Logo Image" src="img/logo.jpg" /> <br /> <br /> <b>The text below will be dark blue when the selected media type is 'screen' and black when the selected media type is 'print':</b> <p> Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. </p> </body> </html>