Erkunden Sie die besten PDF-zu-Bild-Alternativen zu PDFsharp
Die meisten HTML-zu-PDF-Jobs scheitern am gleichen Grund: Die Seite sieht nur dann richtig aus, wenn ein Benutzer angemeldet ist. IronPDF steuert eine Chrome-Engine, sodass es sieht, was ein nicht authentifizierter Browser sehen würde, einen Anmeldebildschirm oder eine leere Hülle, bis Sie ihm die richtigen Cookies übergeben. Drei Teile der API lösen dies, die RequestContext Eigenschaft, die ApplyCookies Methode und das CustomCookies Wörterbuch. Hier ist, wo jedes einzelne passt, mit einem passenden Snippet.
Rechnungen und Abrechnungen hinter der Anmeldung rendern
Die Rechnung eines Kunden befindet sich auf einer sitzungsbasierten Route, und Ihre Anwendung hält bereits deren Sitzung. Geben Sie diese Sitzungs-ID direkt über CustomCookies weiter:
using IronPdf;
using System.Collections.Generic;
var renderer = new ChromePdfRenderer();
renderer.RenderingOptions.RequestContext = IronPdf.Rendering.RequestContexts.Global;
renderer.RenderingOptions.CustomCookies = new Dictionary<string, string>
{
{ "ASP.NET_SessionId", sessionId }
};
renderer.RenderUrlAsPdf("https://app.example.com/account/invoices/1042")
.SaveAs("invoice-1042.pdf");
using IronPdf;
using System.Collections.Generic;
var renderer = new ChromePdfRenderer();
renderer.RenderingOptions.RequestContext = IronPdf.Rendering.RequestContexts.Global;
renderer.RenderingOptions.CustomCookies = new Dictionary<string, string>
{
{ "ASP.NET_SessionId", sessionId }
};
renderer.RenderUrlAsPdf("https://app.example.com/account/invoices/1042")
.SaveAs("invoice-1042.pdf");
Imports IronPdf
Imports System.Collections.Generic
Dim renderer As New ChromePdfRenderer()
renderer.RenderingOptions.RequestContext = IronPdf.Rendering.RequestContexts.Global
renderer.RenderingOptions.CustomCookies = New Dictionary(Of String, String) From {
{"ASP.NET_SessionId", sessionId}
}
renderer.RenderUrlAsPdf("https://app.example.com/account/invoices/1042").SaveAs("invoice-1042.pdf")
Für grundlegende oder Windows-Authentifizierung verwenden Sie stattdessen ApplyCookies. Es meldet sich mit den angegebenen Anmeldeinformationen an der URL an und erfasst die resultierenden Cookies in den globalen Kontext, den das folgende Rendering dann wiederverwendet:
var renderer = new ChromePdfRenderer();
renderer.RenderingOptions.RequestContext = IronPdf.Rendering.RequestContexts.Global;
var credentials = new ChromeHttpLoginCredentials
{
NetworkUsername = "svc_reports",
NetworkPassword = "your_password"
};
string uri = "https://app.example.com/account/invoices/1042";
renderer.ApplyCookies(uri, credentials);
renderer.RenderUrlAsPdf(uri).SaveAs("invoice-1042.pdf");
var renderer = new ChromePdfRenderer();
renderer.RenderingOptions.RequestContext = IronPdf.Rendering.RequestContexts.Global;
var credentials = new ChromeHttpLoginCredentials
{
NetworkUsername = "svc_reports",
NetworkPassword = "your_password"
};
string uri = "https://app.example.com/account/invoices/1042";
renderer.ApplyCookies(uri, credentials);
renderer.RenderUrlAsPdf(uri).SaveAs("invoice-1042.pdf");
Imports IronPdf
Dim renderer As New ChromePdfRenderer()
renderer.RenderingOptions.RequestContext = IronPdf.Rendering.RequestContexts.Global
Dim credentials As New ChromeHttpLoginCredentials With {
.NetworkUsername = "svc_reports",
.NetworkPassword = "your_password"
}
Dim uri As String = "https://app.example.com/account/invoices/1042"
renderer.ApplyCookies(uri, credentials)
renderer.RenderUrlAsPdf(uri).SaveAs("invoice-1042.pdf")
Token-basierte und Drittanbieter-Authentifizierung
Moderne Apps lehnen sich selten auf einfache HTTP-Anmeldeinformationen. Sie authentifizieren sich mit JWTs, OAuth oder SAML, oft speichert das Ergebnis in einem Cookie. Da CustomCookies jedes Schlüssel-Wert-Paar akzeptiert, kann ein Bearer-Token oder ein Identity-Provider-Cookie direkt eingesetzt werden:
renderer.RenderingOptions.CustomCookies = new Dictionary<string, string>
{
{ "auth_token", jwt },
{ "refresh_token", refreshToken }
};
renderer.RenderingOptions.CustomCookies = new Dictionary<string, string>
{
{ "auth_token", jwt },
{ "refresh_token", refreshToken }
};
Imports System.Collections.Generic
renderer.RenderingOptions.CustomCookies = New Dictionary(Of String, String) From {
{"auth_token", jwt},
{"refresh_token", refreshToken}
}
Personalisierte und lokalisierte Dokumente
Cookies tragen oft Locale-, Währungs- oder Feature-Flag-Status. Reichen Sie sie weiter, und das PDF passt zu dem, was dieser spezifische Benutzer sieht, in der richtigen Sprache und Währung:
renderer.RenderingOptions.CustomCookies = new Dictionary<string, string>
{
{ "locale", "en-AU" },
{ "currency", "AUD" },
{ "feature_newLayout", "on" }
};
renderer.RenderingOptions.CustomCookies = new Dictionary<string, string>
{
{ "locale", "en-AU" },
{ "currency", "AUD" },
{ "feature_newLayout", "on" }
};
renderer.RenderingOptions.CustomCookies = New Dictionary(Of String, String) From {
{"locale", "en-AU"},
{"currency", "AUD"},
{"feature_newLayout", "on"}
}
Batch-Erstellung, die eine Sitzung teilt
Um viele PDFs für denselben authentifizierten Benutzer nacheinander zu generieren, setzen Sie RequestContext auf Global. Der Browserzustand, einschließlich Cookies, bleibt über Render hinweg erhalten, sodass Sie sich einmal anmelden, anstatt pro Dokument:
var renderer = new ChromePdfRenderer();
renderer.RenderingOptions.RequestContext = IronPdf.Rendering.RequestContexts.Global;
renderer.RenderingOptions.CustomCookies = new Dictionary<string, string>
{
{ "ASP.NET_SessionId", sessionId }
};
foreach (var id in invoiceIds)
{
renderer.RenderUrlAsPdf($"https://app.example.com/invoices/{id}")
.SaveAs($"invoice-{id}.pdf");
}
var renderer = new ChromePdfRenderer();
renderer.RenderingOptions.RequestContext = IronPdf.Rendering.RequestContexts.Global;
renderer.RenderingOptions.CustomCookies = new Dictionary<string, string>
{
{ "ASP.NET_SessionId", sessionId }
};
foreach (var id in invoiceIds)
{
renderer.RenderUrlAsPdf($"https://app.example.com/invoices/{id}")
.SaveAs($"invoice-{id}.pdf");
}
Imports IronPdf.Rendering
Dim renderer As New ChromePdfRenderer()
renderer.RenderingOptions.RequestContext = RequestContexts.Global
renderer.RenderingOptions.CustomCookies = New Dictionary(Of String, String) From {
{"ASP.NET_SessionId", sessionId}
}
For Each id In invoiceIds
renderer.RenderUrlAsPdf($"https://app.example.com/invoices/{id}").SaveAs($"invoice-{id}.pdf")
Next
Konkurrierendes Rendering ohne Cookies-Bleeding
Das gegenteilige Szenario wiegt ebenso schwer. Ein Dienst, der für viele verschiedene Benutzer gleichzeitig rendert, benötigt Isolated Kontext, der jede Rendering-Operation einen sauberen Status gibt und verhindert, dass die Sitzung eines Benutzers in das Dokument eines anderen überläuft. Geben Sie jedem Thread seinen eigenen Renderer:
using System.Threading.Tasks;
Parallel.ForEach(jobs, job =>
{
var renderer = new ChromePdfRenderer();
renderer.RenderingOptions.RequestContext = IronPdf.Rendering.RequestContexts.Isolated;
renderer.RenderingOptions.CustomCookies = new Dictionary<string, string>
{
{ "ASP.NET_SessionId", job.SessionId }
};
renderer.RenderUrlAsPdf(job.Url).SaveAs(job.OutputPath);
});
using System.Threading.Tasks;
Parallel.ForEach(jobs, job =>
{
var renderer = new ChromePdfRenderer();
renderer.RenderingOptions.RequestContext = IronPdf.Rendering.RequestContexts.Isolated;
renderer.RenderingOptions.CustomCookies = new Dictionary<string, string>
{
{ "ASP.NET_SessionId", job.SessionId }
};
renderer.RenderUrlAsPdf(job.Url).SaveAs(job.OutputPath);
});
Imports System.Threading.Tasks
Imports IronPdf.Rendering
Parallel.ForEach(jobs, Sub(job)
Dim renderer = New ChromePdfRenderer()
renderer.RenderingOptions.RequestContext = RequestContexts.Isolated
renderer.RenderingOptions.CustomCookies = New Dictionary(Of String, String) From {
{"ASP.NET_SessionId", job.SessionId}
}
renderer.RenderUrlAsPdf(job.Url).SaveAs(job.OutputPath)
End Sub)
Die Methode dem Job anpassen
Verwenden Sie Standard-Cookies (ApplyCookies) für grundlegende HTTP-Authentifizierung, Windows-Authentifizierung und einfache Sitzungen. Verwenden Sie CustomCookies für Tokens, multi-parameter Sitzungen, Drittanbieter und gespeicherte Präferenzen. Wählen Sie Global, um Zustand über Renderings hinweg zu teilen und Isolated, um sie getrennt zu halten; Auto ist standardmäßig isoliert und wechselt zu global, sobald ApplyCookies aufgerufen wird.
Die meisten Fehler gruppieren sich um abgelaufene Tokens, nicht übereinstimmende Cookie-Domänen, die Behandlung von sicheren Cookies auf HTTPS-URLs und SameSite-Richtlinien bei Cross-Origin-Anfragen. Bestätigen Sie die Gültigkeit der Cookies vor dem Rendern und verlassen Sie sich auf Global, wenn Sitzungen bestehen bleiben müssen.
Wenn Cookies der gesamte Job sind
Cookies sind keine Randfälle in der PDF-Erzeugung. Wenn Sie es richtig machen, versenden Sie ein brauchbares Dokument; machen Sie es falsch, und Sie versenden einen Screenshot eines Anmeldeformulars.
Häufig gestellte Fragen
Wie render ich eine login-geschützte Seite als PDF mit IronPDF?
Legen Sie RequestContext auf Global fest und füllen Sie CustomCookies mit dem Sitzungs-Cookie des Benutzers, bevor Sie RenderUrlAsPdf aufrufen. Die Chrome-Engine von IronPDF authentifiziert sich mit diesen Cookies und rendert die geschützte Seite.
Was ist der Unterschied zwischen ApplyCookies und CustomCookies in IronPDF?
ApplyCookies meldet sich mit HTTP-Anmeldeinformationen (Basic Auth oder Windows Auth) an und erfasst die resultierenden Sitzungs-Cookies im globalen Kontext. CustomCookies ermöglicht es Ihnen, Cookie-Schlüsselwertpaare direkt bereitzustellen – nützlich für JWT-Tokens, OAuth-Cookies und Multi-Parameter-Sitzungen.
Was ist RequestContext und wann sollte ich Global im Vergleich zu Isolated verwenden?
Verwenden Sie Global, wenn mehrere Renderings die gleiche authentifizierte Sitzung teilen (z. B. die Stapelerzeugung von Rechnungen für einen Benutzer). Verwenden Sie Isolated, wenn für viele verschiedene Benutzer gleichzeitig gerendert wird, sodass jedes Rendern einen sauberen Cookie-Status erhält und Sitzungen nicht zwischen Benutzern überlaufen können.
Kann IronPDF JWT- und OAuth-Authentifizierung für das PDF-Rendering verarbeiten?
Ja. Übergeben Sie die Token-Werte in CustomCookies als Schlüsselwertpaare (z. B. auth_token und refresh_token). IronPDF leitet sie mit jeder Anforderung weiter, die die Chrome-Engine für dieses Rendern stellt.
Warum wird mein PDF als leere Seite oder Anmeldebildschirm gerendert?
Die häufigsten Ursachen sind abgelaufene Sitzungs-Cookies, nicht übereinstimmende Cookie-Domains, Einschränkungen für sichere Cookies bei HTTPS-URLs und SameSite-Policy-Blockierungen bei Cross-Origin-Anforderungen. Stellen Sie sicher, dass die Cookies gültig sind und mit der Zieldomain übereinstimmen, bevor Sie rendern.

