EVO PDF Logo

Set Images Scaling and JPEG Compression Level

EVO PDF Client for .NET Core

EVO HTML to PDF Converter allows you to control the quality of the images in PDF. You can set the JPEG compression level of images in PDF using the PdfDocumentOptionsJpegCompressionLevel property. An object of PdfDocumentOptions type is exposed by the HtmlToPdfConverterPdfDocumentOptions property. A higher compression level of the images leads to a smaller PDF document size and to a lower images quality. The Document class has the similar DocumentJpegCompressionLevel property.

Images Scaling is another parameter which enables the converter to scale the images used in HTML down to their display size in HTML before rendering them in PDF. This can lead to smaller memory consumption during conversion and to a smaller PDF document size but the images quality in PDF can be lower. You can enable the images scaling using the PdfDocumentOptionsImagesScalingEnabled property.

Code Sample - Set Images Scaling and JPEG Compression Level

C#
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Http;

// Use EVO PDF Namespace
using EvoPdfClient;

namespace EvoHtmlToPdfDemo.Controllers.HTML_to_PDF.Images_Quality
{
    public class Images_Scaling_and_CompressionController : Controller
    {
        [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 JPEG Compression Level
            // A higher compression level produces smaller PDF documents but lower quality images in PDF
            // Leave it not set for a default compression level
            htmlToPdfConverter.PdfDocumentOptions.JpegCompressionLevel = int.Parse(collection["jpegCompressionLevelTextBox"]);

            // Set images scaling before rendering to PDF
            // This option enables the converter to scale the images used in HTML down to their display size in HTML before rendering them in PDF. 
            // This can lead to smaller memory consumption during conversion and to a smaller PDF document size but the images quality in PDF can be lower
            htmlToPdfConverter.PdfDocumentOptions.ImagesScalingEnabled = collection["imagesScalingCheckBox"].Count > 0;

            // Convert the HTML page to a PDF document in a memory buffer
            byte[] outPdfBuffer = htmlToPdfConverter.ConvertUrl(collection["urlTextBox"]);

            // Send the PDF file to browser
            FileResult fileResult = new FileContentResult(outPdfBuffer, "application/pdf");
            fileResult.FileDownloadName = "Images_Scaling_and_JPEG_Compression.pdf";

            return fileResult;
        }
    }
}