EVO PDF Logo

Access HTML Page to Convert Through a Proxy

EVO PDF Client for .NET Core

If the HTML page you convert needs access through a proxy server from the computer where you run the converter then you can set the properties of the EvoPdfClientProxyOptions object exposed by the HtmlToPdfConverterProxyOptions property. The proxy server options you can set are the proxy type, the proxy server hostname or IP address, the proxy server TCP port, the username and password if the proxy server requires authentication and also a list of host names to be bypassed and accessed directly without a proxy.

Code Sample - Access a HTML Page Through a Proxy

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
{
    public class Proxy_OptionsController : Controller
    {
        // GET: Proxy_Options
        public ActionResult Index()
        {
            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 proxy type
            // when converting HTML pages from HTTP addresses use the Http proxy type
            // when converting HTML pages from HTTPS addresses use Socks5 proxy type and make sure the proxy server
            // is also configured to use SOCKS5 protocol
            htmlToPdfConverter.ProxyOptions.Type = SelectedProxyType(collection["proxyTypeDropDownList"]);

            // Set proxy hostname and port number
            // Hostname and port number are required when the proxy type is set to something different from None value
            htmlToPdfConverter.ProxyOptions.HostName = collection["hostNameTextBox"];
            htmlToPdfConverter.ProxyOptions.PortNumber = int.Parse(collection["portNumberTextBox"]);

            // Optionally set proxy username and password if they are required by proxy server
            htmlToPdfConverter.ProxyOptions.Username = collection["usernameTextBox"];
            htmlToPdfConverter.ProxyOptions.Password = collection["passwordTextBox"];

            // Optionally set a list of hosts to be accessed directly without a proxy
            if (collection["bypassedHostTextBox"][0].Length > 0)
                htmlToPdfConverter.ProxyOptions.BypassedHosts = new string[] { collection["bypassedHostTextBox"] };

            // 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 = "Proxy_Options.pdf";

            return fileResult;
        }

        private NetworkProxyType SelectedProxyType(string selectedValue)
        {
            switch (selectedValue)
            {
                case "None":
                    return NetworkProxyType.None;
                case "Http":
                    return NetworkProxyType.Http;
                case "Socks5":
                    return NetworkProxyType.Socks5;
                case "HttpCaching":
                    return NetworkProxyType.HttpCaching;
                default:
                    return NetworkProxyType.None;
            }
        }
    }
}