Ghostscript GPL vs IronPDF : Guide de comparaison technique
Les applications Enterprise qui génèrent des PDF à partir de HTML fonctionnent souvent au sein de réseaux fermés sans accès direct à Internet. Le problème apparaît lors du rendu : un modèle de facture ou de rapport fait référence à un logo, une police web ou une feuille de style hébergée sur un CDN externe, et dans le réseau de l'entreprise, ces demandes échouent silencieusement. Le document sort non stylé, avec des images cassées et des polices manquantes. Le routage du moteur de rendu à travers le proxy de l'entreprise corrige cela, et IronPDF accepte un proxy directement lors de son appel de rendu.
Le problème d'entreprise
Une application de finance, de santé ou d'assurance produit des documents clients à partir de modèles web. Ces modèles récupèrent des ressources externes, mais le serveur est derrière un pare-feu et un proxy. Sans configuration du proxy, le moteur ne peut pas atteindre les ressources, donc le résultat semble cassé. Beaucoup de ces environnements utilisent également des proxys authentifiés, ce qui ajoute des identifiants à la demande.
La solution
Le proxy est un paramètre de la méthode RenderHtmlAsPdf, et non une propriété dans les options de rendu. Le passage d'une chaîne proxy route toutes les demandes de ressources du moteur via ce 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");
Pour un proxy authentifié, les identifiants vont dans l'URL du proxy. Les caractères spéciaux dans le mot de passe doivent être encodés en pourcentage.
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);
Rendu des URLs internes derrière un proxy
La méthode de rendu URL n'accepte pas de paramètre proxy. Le modèle pratique est de récupérer le HTML avec un HttpClient configuré pour le proxy, puis de rendre ce HTML afin que les ressources référencées soient également routées via le 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");
Points à planifier
- L'authentification proxy n'est pas l'authentification page : Les identifiants dans l'URL du proxy s'authentifient contre le proxy, ce qui diffère des identifiants de connexion au site.
- Le schéma se réfère au saut du proxy : Un proxy
http://peut toujours récupérer des ressourceshttps://, donc le choix du schéma concerne si la connexion app-to-proxy nécessite TLS. - Conteneurs et pipelines : Les déploiements Docker et les agents de build CI n'ont généralement pas d'e prévariant, donc la même configuration proxy s'applique là.
Résultat
Avec un paramètre, les équipes obtiennent des PDF entièrement stylés et de marque à partir d'applications exécutées derrière un proxy d'entreprise, y compris dans les environnements authentifiés et les conteneurs. Les détails complets de configuration sont dans le guide de proxy.

Curtis Chau détient un baccalauréat en informatique (Université de Carleton) et se spécialise dans le développement front-end avec expertise en Node.js, TypeScript, JavaScript et React. Passionné par la création d'interfaces utilisateur intuitives et esthétiquement plaisantes, Curtis aime travailler avec des frameworks modernes et créer des manuels bien structurés et visuellement attrayants.