Zum Fußzeileninhalt springen
PRODUKTVERGLEICHE

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");
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");
Imports IronPdf

Dim renderer As New ChromePdfRenderer()

Dim pdf As PdfDocument = renderer.RenderHtmlAsPdf(
    htmlContent,
    baseUrlOrPath: "C:\templates\assets\",
    proxy: "http://proxy.co/rp.local:8080"
)
pdf.SaveAs("report.pdf")
$vbLabelText   $csharpLabel

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);
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);
Imports System

Dim encoded As String = Uri.EscapeDataString("P@ssw0rd!")
Dim proxy As String = $"http://svc-account:{encoded}@proxy.co/rp.local:8080"

Dim pdf As PdfDocument = renderer.RenderHtmlAsPdf(htmlContent, baseUrlOrPath:=Nothing, proxy:=proxy)
$vbLabelText   $csharpLabel

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");
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");
Imports System.Net
Imports System.Net.Http

Dim webProxy As New WebProxy("http://proxy.co/rp.local:8080") With {
    .Credentials = New NetworkCredential("svc-account", "P@ssw0rd!")
}
Dim handler As New HttpClientHandler With {
    .Proxy = webProxy,
    .UseProxy = True
}
Using httpClient As New HttpClient(handler)
    Dim html As String = Await httpClient.GetStringAsync("https://dashboard.internal.co/rp/report")
    Dim pdf As PdfDocument = renderer.RenderHtmlAsPdf(html, baseUrlOrPath:=Nothing, proxy:="http://proxy.co/rp.local:8080")
End Using
$vbLabelText   $csharpLabel

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 trotzdem https://-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.

Häufig gestellte Fragen

Warum haben Unternehmensanwendungen Schwierigkeiten mit der PDF-Darstellung hinter einem Unternehmensproxy?

Unternehmensanwendungen laufen häufig in Netzwerken, die gesperrt sind und keinen direkten Zugriff auf externe Ressourcen haben. Dies führt zu Problemen wie defekte Bilder und fehlende Schriftarten in PDFs, wenn externe Assets nicht zugänglich sind.

Wie löst IronPDF PDF-Darstellungsprobleme hinter einem Proxy?

IronPDF ermöglicht es Ihnen, einen Proxy direkt in der Methode `RenderHtmlAsPdf` zu spezifizieren, sodass alle Asset-Anfragen über den Proxy geleitet werden, um sicherzustellen, dass externe Ressourcen korrekt zugegriffen und gerendert werden.

Kann IronPDF authentifizierte Proxys für die PDF-Darstellung handhaben?

Ja, IronPDF unterstützt authentifizierte Proxys. Anmeldedaten können in die Proxy-URL aufgenommen werden, und Sonderzeichen in Passwörtern sollten Prozent-kodiert werden.

Was ist die Methode, um interne URLs hinter einem Proxy mit IronPDF darzustellen?

Für interne URLs verwenden Sie einen mit einem Proxy konfigurierten `HttpClient`, um zuerst das HTML abzurufen, und rendern Sie dann das HTML mit IronPDF, sodass alle referenzierten Assets durch den Proxy geleitet werden.

Was sollte berücksichtigt werden, wenn Proxys für Docker-Deployments mit IronPDF konfiguriert werden?

Docker-Deployments und CI Build-Agents haben normalerweise keinen Ausgang, daher sollte dieselbe Proxy-Konfiguration verwendet werden, wie bei Anwendungen hinter einem Unternehmensproxy, um den Ressourcenzugang sicherzustellen.

Beeinflusst das Schema der Proxy-URL die von IronPDF abgerufenen Ressourcen?

Das Schema der Proxy-URL (`http://` oder `https://`) ist wichtig für die Verbindung zwischen der App und dem Proxy. Ein `http://` Proxy kann dennoch `https://` Ressourcen abrufen, sodass die Wahl des Schemas davon abhängt, ob TLS für die Verbindung von der App zum Proxy benötigt wird.

Welche Auswirkungen hat die Verwendung eines Proxy-Parameters in IronPDF?

Durch die Verwendung eines Proxy-Parameters ermöglicht IronPDF Anwendungen das Erzeugen vollständig gestalteter, gebrandeter PDFs, selbst wenn diese hinter einem Unternehmensproxy oder in authentifizierten Umgebungen und Containern laufen.

Wie werden Sonderzeichen in Proxy-Passwörtern in IronPDF gehandhabt?

Sonderzeichen in Proxy-Passwörtern müssen Prozent-kodiert werden, wenn die Proxy-URL für IronPDF gebildet wird, um ordnungsgemäß zu authentifizieren.

Was ist der Unterschied zwischen Proxy-Authentifizierung und Seiten-Authentifizierung?

Proxy-Authentifizierung beinhaltet Anmeldedaten in der Proxy-URL für den Zugriff auf den Proxy-Server, während Seiten-Authentifizierung das Einloggen auf eine bestimmte Website oder einen Webdienst betrifft.

Curtis Chau
Technischer Autor

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 ...

Weiterlesen

Iron-Support-Team

Wir sind 24 Stunden am Tag, 5 Tage die Woche online.
Chat
E-Mail
Rufen Sie mich an