Konvertieren von HTML in PDF hinter der Anmeldeauthentifizierung

This article was translated from English: Does it need improvement?
Translated
View the article in English

Der beste Weg, mit Logins umzugehen, ist, sie wenn möglich zu vermeiden und html direkt aus einer Datei oder einem String zu rendern.


C# NuGet-Bibliothek für PDF

Installieren mit NuGet

Install-Package IronPdf
oder
Java PDF JAR

Herunterladen DLL

DLL herunterladen

Manuelle Installation in Ihr Projekt

C# NuGet-Bibliothek für PDF

Installieren mit NuGet

Install-Package IronPdf
oder
Java PDF JAR

Herunterladen DLL

DLL herunterladen

Manuelle Installation in Ihr Projekt

Fangen Sie noch heute an, IronPDF in Ihrem Projekt mit einer kostenlosen Testversion zu verwenden.

Erster Schritt:
green arrow pointer

Schau dir an IronPDF an Nuget Für schnelle Installation und Bereitstellung. Mit über 8 Millionen Downloads verwandelt es PDF mit C#.

C# NuGet-Bibliothek für PDF nuget.org/packages/IronPdf/
Install-Package IronPdf

Erwägen Sie die Installation der IronPDF DLL direkt. Laden Sie es herunter und installieren Sie es manuell für Ihr Projekt oder die GAC-Form: IronPdf.zip

Manuelle Installation in Ihr Projekt

DLL herunterladen
## Bewährte Praktiken IronPDF unterstützt TLS-Netzwerkauthentifizierung(benutzernamen und Passwort) die extrem sicher ist und von .NET-Webanwendungen problemlos unterstützt werden kann:[ChromeHttpLoginCredentials API](/object-reference/api/IronPdf.ChromeHttpLoginCredentials.html) Am besten verwenden Sie `System.Net.WebClient` oder `HttpClient`, um den HTML-Code und alle Assets herunterzuladen. Damit werden Kopfzeilen, Logins und alles andere, was Sie benötigen, vollständig unterstützt. Nach dem Herunterladen in den Speicher oder auf die Festplatte kann IronPDF Ihr HTML in eine PDF-Datei umwandeln. Assets wie Stylesheets und Bilder können mit dem `HtmlAgilityPack` ermittelt und dann ebenfalls mit dem `System.Net.WebClient` heruntergeladen werden. ```cs string html; using (WebClient client = new WebClient()) { html = client.DownloadString("http://www.google.com"); } HtmlDocument doc = new HtmlDocument(); doc.LoadHtml(html); foreach(HtmlNode img in doc.DocumentNode.SelectNodes("//img")) { Console.WriteLine(img.GetAttributeValue("src", null)); } ```
Bitte beachten Sie
Jede relative Url kann in eine absolute Url umgewandelt werden, indem ein überladener Konstruktor für die Klasse `System.Uri` verwendet wird. Um alle relativen Pfade in einem gesamten HTML-Dokument umzubasieren, fügen Sie eine mit HtmlAgilityPack in die Kopfzeile. [Beispiel](https://www.w3schools.com/tags/tag_base.asp).
## Anmeldung über Netzwerkauthentifizierung Die meisten ASP.NET-Anwendungen unterstützen die Netzwerkauthentifizierung, die zuverlässiger ist als das Senden von HTML-Formularen. ```cs :path=/static-assets/pdf/content-code-examples/how-to/logins-username-password.cs ``` ## Anmeldung über ein HTML-Formular Die Anmeldung durch Senden von Daten an ein HTML-Formular kann auch mit der Klasse **ChromeHttpLoginCredentials** wie im vorherigen Beispiel erfolgen. *Siehe IronPDFs[ChromeHttpLoginCredentials API](/object-reference/api/IronPdf.ChromeHttpLoginCredentials.html).* **Bitte beachten Sie:** - Die Anmeldedaten müssen an die im ACTION-Attribut des HTML-Formulars angegebene URL gesendet werden. Dies sollte als \* eingestellt werden[LoginFormUrl](https://ironpdf.com/object-reference/api/IronPdf.ChromeHttpLoginCredentials.html)\*-Attribut der HttpLoginCredentials. Diese kann von der Url abweichen, die Sie tatsächlich als PDF wiedergeben möchten. - Die zu sendenden Daten sollten alle Eingaben und Textfelder des HTML-Formulars repräsentieren. Die Attribute name definieren den Namen jeder Variablen(nicht das Id, wie gemeinhin fälschlicherweise angenommen wird). - Einige Websites bieten einen aktiven Schutz gegen diese Art der maschinellen Anmeldung. ## MVC Mit dem folgenden Workaround kann eine .NET MVC-Ansicht programmatisch in eine Zeichenkette umgewandelt werden, was sehr nützlich ist, um MVC-Anmeldungen zu vermeiden und dennoch eine Ansicht originalgetreu darzustellen. ```cs public static string RenderPartialViewToString(this Controller controller, string viewPath, object model = null) { try { var context = controller.ControllerContext; controller.ViewData.Model = model; using (var sw = new StringWriter()) { var viewResult = ViewEngines.Engines.FindPartialView(context, viewPath); if (viewResult.View == null) { throw new Exception($"Partial view {viewPath} could not be found."); } var viewContext = new ViewContext(context, viewResult.View, context.Controller.ViewData,context.Controller.TempData, sw); viewResult.View.Render(viewContext, sw); viewResult.ViewEngine.ReleaseView(context, viewResult.View); return sw.GetStringBuilder().ToString(); } } catch (Exception ex) { return ex.Message; } } ```