using IronPdf;var renderer = new ChromePdfRenderer();// Proxy is the third parameter — not a render optionPdfDocument pdf = renderer.RenderHtmlAsPdf( "<h1>Hello from behind the proxy</h1>", baseUrlOrPath: null, proxy: "http://proxy.corp.local:8080");pdf.SaveAs("proxied-output.pdf");
using IronPdf;
var renderer = new ChromePdfRenderer();
// Proxy is the third parameter — not a render option
PdfDocument pdf = renderer.RenderHtmlAsPdf(
"<h1>Hello from behind the proxy</h1>",
baseUrlOrPath: null,
proxy: "http://proxy.corp.local:8080"
);
pdf.SaveAs("proxied-output.pdf");
' Instance methods
Function RenderHtmlAsPdf(Html As String, BaseUrlOrPath As String, Optional Proxy As String = Nothing) As PdfDocument
End Function
Function RenderHtmlAsPdf(Html As String, Optional BaseUrl As Uri = Nothing, Optional Proxy As String = Nothing) As PdfDocument
End Function
' Static methods
Shared Function StaticRenderHtmlAsPdf(Html As String, Optional Options As ChromePdfRenderOptions = Nothing, Optional Proxy As String = Nothing) As PdfDocument
End Function
Shared Function StaticRenderHtmlAsPdf(Html As String, BaseUrlOrPath As String, Optional Options As ChromePdfRenderOptions = Nothing, Optional Proxy As String = Nothing) As PdfDocument
End Function
using IronPdf;var renderer = new ChromePdfRenderer();// Direct connection (default — no proxy)var pdfDirect = renderer.RenderHtmlAsPdf("<h1>Direct</h1>");// Through an unauthenticated proxyvar pdfProxied = renderer.RenderHtmlAsPdf( "<h1>Proxied</h1>", baseUrlOrPath: null, proxy: "http://squid.internal:3128");// Using the Uri overloadvar pdfUri = renderer.RenderHtmlAsPdf( "<h1>Proxied via Uri overload</h1>", baseUrl: new Uri("https://assets.example.com/"), proxy: "https://proxy.corp.local:8443");
using IronPdf;
var renderer = new ChromePdfRenderer();
// Direct connection (default — no proxy)
var pdfDirect = renderer.RenderHtmlAsPdf("<h1>Direct</h1>");
// Through an unauthenticated proxy
var pdfProxied = renderer.RenderHtmlAsPdf(
"<h1>Proxied</h1>",
baseUrlOrPath: null,
proxy: "http://squid.internal:3128"
);
// Using the Uri overload
var pdfUri = renderer.RenderHtmlAsPdf(
"<h1>Proxied via Uri overload</h1>",
baseUrl: new Uri("https://assets.example.com/"),
proxy: "https://proxy.corp.local:8443"
);
ImportsIronPdfDim renderer As New ChromePdfRenderer()' Direct connection (default — no proxy)Dim pdfDirect = renderer.RenderHtmlAsPdf("<h1>Direct</h1>")' Through an unauthenticated proxyDim pdfProxied = renderer.RenderHtmlAsPdf( "<h1>Proxied</h1>", baseUrlOrPath:=Nothing, proxy:="http://squid.internal:3128")' Using the Uri overloadDim pdfUri = renderer.RenderHtmlAsPdf( "<h1>Proxied via Uri overload</h1>", baseUrl:=New Uri("https://assets.example.com/"), proxy:="https://proxy.corp.local:8443")
Imports IronPdf
Dim renderer As New ChromePdfRenderer()
' Direct connection (default — no proxy)
Dim pdfDirect = renderer.RenderHtmlAsPdf("<h1>Direct</h1>")
' Through an unauthenticated proxy
Dim pdfProxied = renderer.RenderHtmlAsPdf(
"<h1>Proxied</h1>",
baseUrlOrPath:=Nothing,
proxy:="http://squid.internal:3128"
)
' Using the Uri overload
Dim pdfUri = renderer.RenderHtmlAsPdf(
"<h1>Proxied via Uri overload</h1>",
baseUrl:=New Uri("https://assets.example.com/"),
proxy:="https://proxy.corp.local:8443"
)
// Static render with proxy — no renderer instance neededvar pdf = ChromePdfRenderer.StaticRenderHtmlAsPdf( "<h1>Static render through proxy</h1>", options: null, proxy: "http://proxy.corp.local:8080");
// Static render with proxy — no renderer instance needed
var pdf = ChromePdfRenderer.StaticRenderHtmlAsPdf(
"<h1>Static render through proxy</h1>",
options: null,
proxy: "http://proxy.corp.local:8080"
);
' Static render with proxy — no renderer instance neededDim pdf = ChromePdfRenderer.StaticRenderHtmlAsPdf( "<h1>Static render through proxy</h1>", options:=Nothing, proxy:="http://proxy.corp.local:8080")
' Static render with proxy — no renderer instance needed
Dim pdf = ChromePdfRenderer.StaticRenderHtmlAsPdf(
"<h1>Static render through proxy</h1>",
options:=Nothing,
proxy:="http://proxy.corp.local:8080"
)
using IronPdf;var renderer = new ChromePdfRenderer();string proxyWithAuth = "http://svc-account:P%40ssw0rd%21@proxy.corp.local:8080";PdfDocument pdf = renderer.RenderHtmlAsPdf( htmlContent, baseUrlOrPath: @"C:\templates\assets\", proxy: proxyWithAuth);pdf.SaveAs("report.pdf");
using IronPdf;
var renderer = new ChromePdfRenderer();
string proxyWithAuth = "http://svc-account:P%40ssw0rd%21@proxy.corp.local:8080";
PdfDocument pdf = renderer.RenderHtmlAsPdf(
htmlContent,
baseUrlOrPath: @"C:\templates\assets\",
proxy: proxyWithAuth
);
pdf.SaveAs("report.pdf");
ImportsIronPdfDim renderer As New ChromePdfRenderer()Dim proxyWithAuth AsString = "http://svc-account:P%40ssw0rd%21@proxy.corp.local:8080"Dim pdf AsPdfDocument = renderer.RenderHtmlAsPdf( htmlContent, baseUrlOrPath: "C:\templates\assets\", proxy:=proxyWithAuth)pdf.SaveAs("report.pdf")
Imports IronPdf
Dim renderer As New ChromePdfRenderer()
Dim proxyWithAuth As String = "http://svc-account:P%40ssw0rd%21@proxy.corp.local:8080"
Dim pdf As PdfDocument = renderer.RenderHtmlAsPdf(
htmlContent,
baseUrlOrPath: "C:\templates\assets\",
proxy:=proxyWithAuth
)
pdf.SaveAs("report.pdf")
Imports System
Dim rawPassword As String = "P@ssw0rd!"
Dim encoded As String = Uri.EscapeDataString(rawPassword) ' "P%40ssw0rd%21"
Dim proxy As String = $"http://svc-account:{encoded}@proxy.corp.local:8080"
using IronPdf;using System.Net;using System.Net.Http;// Step 1: Configure HttpClient with the corporate proxyvar proxy = new WebProxy("http://proxy.corp.local:8080"){Credentials = new NetworkCredential("svc-account", "P@ssw0rd!")};var handler = new HttpClientHandler { Proxy = proxy, UseProxy = true };using var httpClient = new HttpClient(handler);// Step 2: Fetch the HTML from the target URLstring targetUrl = "https://dashboard.internal.corp/quarterly-report";string html = await httpClient.GetStringAsync(targetUrl);// Step 3: Render the fetched HTML, with the proxy for asset loadingvar renderer = new ChromePdfRenderer();PdfDocument pdf = renderer.RenderHtmlAsPdf( html, baseUrlOrPath: targetUrl, // Resolves relative asset paths against the original URL proxy: "http://svc-account:P%40ssw0rd%21@proxy.corp.local:8080");pdf.SaveAs("quarterly-report.pdf");
using IronPdf;
using System.Net;
using System.Net.Http;
// Step 1: Configure HttpClient with the corporate proxy
var proxy = new WebProxy("http://proxy.corp.local:8080")
{
Credentials = new NetworkCredential("svc-account", "P@ssw0rd!")
};
var handler = new HttpClientHandler { Proxy = proxy, UseProxy = true };
using var httpClient = new HttpClient(handler);
// Step 2: Fetch the HTML from the target URL
string targetUrl = "https://dashboard.internal.corp/quarterly-report";
string html = await httpClient.GetStringAsync(targetUrl);
// Step 3: Render the fetched HTML, with the proxy for asset loading
var renderer = new ChromePdfRenderer();
PdfDocument pdf = renderer.RenderHtmlAsPdf(
html,
baseUrlOrPath: targetUrl, // Resolves relative asset paths against the original URL
proxy: "http://svc-account:P%40ssw0rd%21@proxy.corp.local:8080"
);
pdf.SaveAs("quarterly-report.pdf");
ImportsIronPdfImportsSystem.NetImportsSystem.Net.Http' Step 1: Configure HttpClient with the corporate proxyDim proxy As New WebProxy("http://proxy.corp.local:8080") With { .Credentials = New NetworkCredential("svc-account", "P@ssw0rd!")}Dim handler As New HttpClientHandlerWith { .Proxy = proxy, .UseProxy = True}Using httpClient As New HttpClient(handler) ' Step 2: Fetch the HTML from the target URL Dim targetUrl AsString = "https://dashboard.internal.corp/quarterly-report" Dim html AsString = Await httpClient.GetStringAsync(targetUrl) ' Step 3: Render the fetched HTML, with the proxy for asset loading Dim renderer As New ChromePdfRenderer() Dim pdf AsPdfDocument = renderer.RenderHtmlAsPdf( html, baseUrlOrPath:=targetUrl, ' Resolves relative asset paths against the original URL proxy:="http://svc-account:P%40ssw0rd%21@proxy.corp.local:8080" ) pdf.SaveAs("quarterly-report.pdf")EndUsing
Imports IronPdf
Imports System.Net
Imports System.Net.Http
' Step 1: Configure HttpClient with the corporate proxy
Dim proxy As New WebProxy("http://proxy.corp.local:8080") With {
.Credentials = New NetworkCredential("svc-account", "P@ssw0rd!")
}
Dim handler As New HttpClientHandler With {
.Proxy = proxy,
.UseProxy = True
}
Using httpClient As New HttpClient(handler)
' Step 2: Fetch the HTML from the target URL
Dim targetUrl As String = "https://dashboard.internal.corp/quarterly-report"
Dim html As String = Await httpClient.GetStringAsync(targetUrl)
' Step 3: Render the fetched HTML, with the proxy for asset loading
Dim renderer As New ChromePdfRenderer()
Dim pdf As PdfDocument = renderer.RenderHtmlAsPdf(
html,
baseUrlOrPath:=targetUrl, ' Resolves relative asset paths against the original URL
proxy:="http://svc-account:P%40ssw0rd%21@proxy.corp.local:8080"
)
pdf.SaveAs("quarterly-report.pdf")
End Using
// No proxy parameter needed — Chromium uses HTTP_PROXY env varvar renderer = new ChromePdfRenderer();var pdf = renderer.RenderHtmlAsPdf(htmlContent);
// No proxy parameter needed — Chromium uses HTTP_PROXY env var
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf(htmlContent);
' No proxy parameter needed — Chromium uses HTTP_PROXY env varDim renderer As New ChromePdfRenderer()Dim pdf = renderer.RenderHtmlAsPdf(htmlContent)
' No proxy parameter needed — Chromium uses HTTP_PROXY env var
Dim renderer As New ChromePdfRenderer()
Dim pdf = renderer.RenderHtmlAsPdf(htmlContent)
string? proxy = Environment.GetEnvironmentVariable("HTTPS_PROXY");
var pdf = renderer.RenderHtmlAsPdf(html, baseUrlOrPath: null, proxy: proxy);
OptionStrictOnOptionInferOnDim proxy AsString = Environment.GetEnvironmentVariable("HTTPS_PROXY")Dim pdf = renderer.RenderHtmlAsPdf(html, baseUrlOrPath:=Nothing, proxy:=proxy)
Option Strict On
Option Infer On
Dim proxy As String = Environment.GetEnvironmentVariable("HTTPS_PROXY")
Dim pdf = renderer.RenderHtmlAsPdf(html, baseUrlOrPath:=Nothing, proxy:=proxy)
var proxy = new WebProxy("http://proxy.corp.local:8080");var handler = new HttpClientHandler { Proxy = proxy, UseProxy = true };using var client = new HttpClient(handler);var response = await client.GetAsync("https://httpbin.org/ip");Console.WriteLine(await response.Content.ReadAsStringAsync());// Should return the proxy's external IP, not your machine's IP
var proxy = new WebProxy("http://proxy.corp.local:8080");
var handler = new HttpClientHandler { Proxy = proxy, UseProxy = true };
using var client = new HttpClient(handler);
var response = await client.GetAsync("https://httpbin.org/ip");
Console.WriteLine(await response.Content.ReadAsStringAsync());
// Should return the proxy's external IP, not your machine's IP
ImportsSystemImportsSystem.NetImportsSystem.Net.HttpDim proxy As New WebProxy("http://proxy.corp.local:8080")Dim handler As New HttpClientHandlerWith {.Proxy = proxy, .UseProxy = True}Using client As New HttpClient(handler) Dim response = Await client.GetAsync("https://httpbin.org/ip")Console.WriteLine(Awaitresponse.Content.ReadAsStringAsync()) ' Should return the proxy's external IP, not your machine's IPEndUsing
Imports System
Imports System.Net
Imports System.Net.Http
Dim proxy As New WebProxy("http://proxy.corp.local:8080")
Dim handler As New HttpClientHandler With {.Proxy = proxy, .UseProxy = True}
Using client As New HttpClient(handler)
Dim response = Await client.GetAsync("https://httpbin.org/ip")
Console.WriteLine(Await response.Content.ReadAsStringAsync())
' Should return the proxy's external IP, not your machine's IP
End Using
What environment variables should be set for system-level proxy configurations?
For system-level proxy configurations, set the `HTTP_PROXY` and `HTTPS_PROXY` environment variables for general outbound traffic routing in environments like Docker or CI/CD pipelines.
How do you ensure internal resources bypass the proxy in IronPDF?
You can set the `NO_PROXY` environment variable to list domains or hostnames that should bypass the proxy, ensuring internal resources like local CSS servers or image CDNs aren't routed through the proxy unnecessarily.
What are the typical issues when rendering PDFs through a proxy in IronPDF, and how can they be resolved?
Typical issues include timeout errors due to latency, SSL interception requiring corporate root CA certificates, and NTLM authentication needing a local forwarding proxy like CNTLM. Solutions vary but generally include adjusting timeouts, installing certificates properly, and ensuring correct proxy credentials formatting.