Comment convertir HTML en PDF derrière l'authentification de la connexion

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

La meilleure façon de traiter les logins est de les éviter si possible et de rendre le html directement à partir d'un fichier ou d'une chaîne de caractères.


Bibliothèque NuGet C# pour PDF

Installer avec NuGet

Install-Package IronPdf
ou
Java PDF JAR

Télécharger DLL

Télécharger la DLL

Installation manuelle dans votre projet

Bibliothèque NuGet C# pour PDF

Installer avec NuGet

Install-Package IronPdf
ou
Java PDF JAR

Télécharger DLL

Télécharger la DLL

Installation manuelle dans votre projet

Commencez à utiliser IronPDF dans votre projet dès aujourd'hui avec un essai gratuit.

Première étape :
green arrow pointer

Découvrez IronPDF sur NuGet pour une installation rapide et un déploiement facile. Avec plus de 8 millions de téléchargements, il transforme PDF avec C#.

Bibliothèque NuGet C# pour PDF nuget.org/packages/IronPdf/
Install-Package IronPdf

Envisagez d'installer le IronPDF DLL directement. Téléchargez et installez-le manuellement pour votre projet ou sous forme de GAC : {{lienDllAfficher}}

Installation manuelle dans votre projet

Télécharger la DLL
## Meilleures pratiques IronPDF prend en charge l'authentification réseau TLS (nom d'utilisateur et mot de passe) qui est extrêmement sûr et que les applications web .NET peuvent facilement prendre en charge : [API ChromeHttpLoginCredentials](/object-reference/api/IronPdf.ChromeHttpLoginCredentials.html) La meilleure pratique consiste à utiliser `System.Net.WebClient` ou `HttpClient` pour télécharger le code HTML et tous les actifs. Il prend en charge les en-têtes, les identifiants et tout ce dont vous avez besoin. Une fois téléchargé en mémoire ou sur le disque, IronPDF peut transformer votre HTML en PDF. Les éléments tels que les feuilles de style et les images peuvent être découverts à l'aide du `HtmlAgilityPack`, puis téléchargés à l'aide du `System.Net.WebClient`. ```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)); } ``` [{i :(Toute url relative peut être transformée en url absolue en utilisant un constructeur surchargé pour la classe `System.Uri`. Pour rebaser tous les chemins relatifs d'un document html entier, ajoutez une baliseà l'en-tête en utilisant HtmlAgilityPack. [Exemple](https://www.w3schools.com/tags/tag_base.asp).)}] ## Connexion à l'aide de l'authentification réseau La plupart des applications ASP.NET prennent en charge l'authentification réseau, qui est plus fiable que l'affichage de formulaires HTML. ```cs :path=/static-assets/pdf/content-code-examples/how-to/logins-username-password.cs ``` ## Connexion à l'aide d'un formulaire HTML Pour se connecter en envoyant des données à un formulaire HTML, on peut également utiliser la classe **ChromeHttpLoginCredentials** comme dans l'exemple précédent. *Voir le site web d'IronPDF [API ChromeHttpLoginCredentials](/object-reference/api/IronPdf.ChromeHttpLoginCredentials.html).* **Please Consider:** - Les données de connexion doivent être envoyées à l'adresse URL spécifiée dans l'attribut ACTION du formulaire HTML. Il doit être défini comme étant le \*[LoginFormUrl](https://ironpdf.com/object-reference/api/IronPdf.ChromeHttpLoginCredentials.html)\* de l'attribut HttpLoginCredentials. Elle peut être différente de l'url que vous souhaitez rendre au format PDF. - Les données à envoyer doivent représenter chaque entrée et chaque zone de texte du formulaire HTML. Les attributs name définissent le nom de chaque variable (et non pas l'id comme on le croit généralement). - Certains sites web peuvent offrir une protection active contre ce type de connexion à la machine. ## MVC La solution suivante permet à une vue MVC .NET d'être rendue par programme vers une chaîne de caractères, ce qui est très utile pour éviter les connexions MVC tout en rendant une vue fidèlement. ```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; } } ```