Ghostscript GPL vs. IronPDF: Leitfaden für einen technischen Vergleich
Enterprise-Anwendungen, die PDFs aus HTML generieren, laufen oft in abgeschotteten Netzwerken ohne direkten Zugang zum Internet. Das Problem tritt zur Renderzeit auf: Eine Rechnungs- oder Berichtsvorlage verweist auf ein Logo, eine Web-Schriftart oder ein Stylesheet, die auf einem externen CDN gehostet werden, und innerhalb des Unternehmensnetzwerks scheitern diese Anfragen lautlos. Das Dokument wird unverändert ausgegeben, mit kaputten Bildern und fehlenden Schriftarten. Die Weiterleitung der Rendering-Engine durch den Unternehmens-Proxy behebt dies, und IronPDF akzeptiert einen Proxy direkt beim Renderaufruf.
Das geschäftliche Problem
Eine Finanz-, Gesundheits- oder Versicherungs-App erstellt Kundendokumente aus Web-Vorlagen. Diese Vorlagen verwenden externe Ressourcen, aber der Server befindet sich hinter einer Firewall und einem Proxy. Ohne Proxy-Konfiguration kann die Engine nicht auf die Ressourcen zugreifen, sodass die Ausgabe defekt aussieht. Viele dieser Umgebungen verwenden auch authentifizierte Proxies, wodurch Anmeldedaten erforderlich werden.
Die Lösung
Der Proxy ist ein Parameter der RenderHtmlAsPdf-Methode, keine Eigenschaft bei den Renderoptionen. Durch Übergeben eines Proxy-Strings werden alle Anfragen an Ressourcen von der Engine über diesen Proxy geleitet.
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");
Bei einem authentifizierten Proxy gehen die Anmeldedaten in die Proxy-URL. Sonderzeichen im Passwort müssen prozentcodiert werden.
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);
Interne URLs hinter einem Proxy rendern
Die URL-Render-Methode akzeptiert keinen Proxy-Parameter. Das praktische Muster besteht darin, das HTML mit einem HttpClient, das für den Proxy konfiguriert ist, abzurufen und dann dieses HTML zu rendern, damit die referenzierten Ressourcen ebenfalls durch den Proxy geleitet werden.
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");
Punkte, die zu planen sind
- Proxy-Authentifizierung ist nicht gleich Seiten-Authentifizierung: Anmeldedaten in der Proxy-URL authentifizieren gegenüber dem Proxy, was sich von Anmeldedaten für den Website-Login unterscheidet.
- Schema bezieht sich auf den Proxy-Hop: Ein
http://-Proxy kann trotzdemhttps://-Ressourcen abrufen, daher geht es bei der Schemaauswahl darum, ob die Verbindung zwischen App und Proxy TLS benötigt. - Container und Pipelines: Docker-Bereitstellungen und CI-Build-Agenten haben in der Regel keinen Ausgang, sodass dort dieselbe Proxy-Konfiguration gilt.
Ergebnis
Mit einem Parameter erhalten Teams vollständig gestylte, gebrandete PDFs von Anwendungen, die hinter einem Unternehmens-Proxy laufen, einschließlich authentifizierter Umgebungen und Container. Vollständige Konfigurationsdetails finden Sie im Proxy-Leitfaden.

Curtis Chau hat einen Bachelor-Abschluss in Informatik von der Carleton University und ist spezialisiert auf Frontend-Entwicklung mit Expertise in Node.js, TypeScript, JavaScript und React. Leidenschaftlich widmet er sich der Erstellung intuitiver und ästhetisch ansprechender Benutzerschnittstellen und arbeitet gerne mit modernen Frameworks sowie der Erstellung gut strukturierter, optisch ansprechender Handbücher.