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. Winnovative HTML to PDF Converter allows you to select the media type for which you want to render the HTML document using the HtmlToPdfConverterMediaType property.
using System;
using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Hosting;
// Use Winnovative Namespace
using Winnovative.Pdf.Chromium;
namespace Winnovative_Chromium_AspNetDemo.Controllers.HTML_to_PDF
{
public class Select_Screen_or_Print_Media_TypeController : Controller
{
private readonly IWebHostEnvironment m_hostingEnvironment;
public Select_Screen_or_Print_Media_TypeController(IWebHostEnvironment hostingEnvironment)
{
m_hostingEnvironment = hostingEnvironment;
}
// GET: Select_Screen_or_Print_Media_Type
public ActionResult Index()
{
SetCurrentViewData();
return View();
}
[HttpPost]
public ActionResult ConvertHtmlToPdf(IFormCollection collection)
{
// Set license key received after purchase to use the converter in licensed mode
// Leave it not set to use the library in demo mode
Licensing.LicenseKey = "fvDh8eDx4fHg4P/h8eLg/+Dj/+jo6Og=";
// Create a HTML to PDF converter object with default settings
HtmlToPdfConverter htmlToPdfConverter = new HtmlToPdfConverter();
// 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;
}
private void SetCurrentViewData()
{
ViewData["ContentRootPath"] = m_hostingEnvironment.ContentRootPath + "/wwwroot";
HttpRequest request = 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;
}
}
}
<!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>