Ghostscript GPL vs IronPDF: Guia de Comparação Técnica
Aplicações empresariais que geram PDFs a partir de HTML costumam operar em redes fechadas, sem rota direta para a internet. O problema surge no momento da renderização: um modelo de fatura ou relatório referencia um logotipo, fonte da web ou folha de estilo hospedada em um CDN externo, e dentro da rede corporativa essas solicitações falham silenciosamente. O documento é gerado sem estilo, com imagens quebradas e fontes ausentes. Roteando o motor de renderização através do proxy da empresa corrige isso, e o IronPDF aceita um proxy diretamente em sua chamada de renderização.
O Problema Empresarial
Um aplicativo financeiro, de saúde ou de seguros produz documentos de clientes a partir de modelos da web. Esses modelos puxam ativos externos, mas o servidor está atrás de um firewall e proxy. Sem configuração de proxy, o motor não consegue acessar os ativos, então a saída parece quebrada. Muitos desses ambientes também executam proxies autenticados, o que adiciona credenciais ao requisito.
A solução
O proxy é um parâmetro no método RenderHtmlAsPdf, não uma propriedade nas opções de renderização. Passar uma string de proxy roteia todas as solicitações de ativos do motor através desse proxy.
using IronPdf;
var renderer = new ChromePdfRenderer();
PdfDocument pdf = renderer.RenderHtmlAsPdf(
htmlContent,
baseUrlOrPath: @"C:\templates\assets\",
proxy: "http://proxy.co/rp.local:8080"
);
pdf.SaveAs("report.pdf");
Para um proxy autenticado, credenciais são inseridas na URL do proxy. Caracteres especiais na senha devem ser codificados em porcentagem.
string encoded = Uri.EscapeDataString("P@ssw0rd!");
string proxy = $"http://svc-account:{encoded}@proxy.co/rp.local:8080";
PdfDocument pdf = renderer.RenderHtmlAsPdf(htmlContent, baseUrlOrPath: null, proxy: proxy);
Renderizando URLs Internos por Trás de um Proxy
O método de renderização de URL não aceita um parâmetro de proxy. O padrão prático é buscar o HTML com um HttpClient configurado para o proxy, então renderizar esse HTML para que os ativos referenciados também roteiem pelo proxy.
using System.Net;
using System.Net.Http;
var webProxy = new WebProxy("http://proxy.co/rp.local:8080")
{
Credentials = new NetworkCredential("svc-account", "P@ssw0rd!")
};
var handler = new HttpClientHandler { Proxy = webProxy, UseProxy = true };
using var httpClient = new HttpClient(handler);
string html = await httpClient.GetStringAsync("https://dashboard.internal.co/rp/report");
PdfDocument pdf = renderer.RenderHtmlAsPdf(html, baseUrlOrPath: null, proxy: "http://proxy.co/rp.local:8080");
Pontos para Planejar
- Autenticação de proxy não é autenticação de página: Credenciais na URL do proxy autenticam contra o proxy, o que difere das credenciais de login do site.
- Esquema refere-se ao salto do proxy: Um proxy
http://ainda pode buscar recursoshttps://, então a escolha do esquema é sobre se a conexão app-para-proxy precisa de TLS. - Containers e pipelines: Implantações Docker e agentes de construção CI geralmente não têm saída, então a mesma configuração de proxy se aplica lá.
Resultado
Com um parâmetro, equipes obtêm PDFs totalmente estilizados e com marca a partir de aplicações rodando por trás de um proxy corporativo, incluindo ambientes autenticados e containers. Detalhes completos de configuração estão no guia de proxy.

Curtis Chau é bacharel em Ciência da Computação (Universidade Carleton) e se especializa em desenvolvimento front-end, com experiência em Node.js, TypeScript, JavaScript e React. Apaixonado por criar interfaces de usuário intuitivas e esteticamente agradáveis, Curtis gosta de trabalhar com frameworks modernos e criar manuais bem estruturados e visualmente atraentes.