Cómo convertir HTML a PDF tras la autenticación de inicio de sesión

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

La mejor manera de lidiar con los inicios de sesión es evitarlos si es posible, y renderizar html directamente desde un archivo o una cadena.


Biblioteca NuGet C# para PDF

Instalar con NuGet

Install-Package IronPdf
o
Java PDF JAR

Descargar DLL

Descargar DLL

Instalar manualmente en su proyecto

## Buenas prácticas IronPDF admite la autenticación de red TLS (nombre de usuario y contraseña) que es extremadamente seguro y las aplicaciones web .NET pueden soportarlo fácilmente: [API ChromeHttpLoginCredentials](/object-reference/api/IronPdf.ChromeHttpLoginCredentials.html) La mejor práctica es utilizar `System.Net.WebClient` o `HttpClient` para descargar el HTML y cualquier activo. Es totalmente compatible con cabeceras, inicios de sesión y todo lo que pueda necesitar. Una vez descargado en la memoria o en el disco, IronPDF puede convertir su HTML en un PDF. Activos como hojas de estilo e imágenes pueden ser descubiertos usando el `HtmlAgilityPack` y luego descargados usando también el `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)); } ```
Atención
Cualquier url relativa puede ser convertida en una url absoluta usando un constructor sobrecargado para la clase `System.Uri`. Para volver a basar cualquier ruta relativa en un documento html completo, añada una directivaa la cabecera utilizando HtmlAgilityPack. [Ejemplo](https://www.w3schools.com/tags/tag_base.asp).
## Inicio de sesión mediante autenticación de red La mayoría de las aplicaciones ASP.NET admiten la autenticación de red, que es más fiable que la publicación de formularios HTML. ```cs :path=/static-assets/pdf/content-code-examples/how-to/logins-username-password.cs ``` ## Inicio de sesión mediante un formulario HTML Para iniciar sesión enviando datos a un formulario HTML también se puede conseguir utilizando la clase **ChromeHttpLoginCredentials** como en el ejemplo anterior. *Ver IronPDF's [API ChromeHttpLoginCredentials](/object-reference/api/IronPdf.ChromeHttpLoginCredentials.html).* **Por favor considere:** - Los datos de acceso deben enviarse a la URL especificada en el atributo ACTION del formulario HTML. Esto se debe establecer como el \ *[LoginFormUrl](https://ironpdf.com/object-reference/api/IronPdf.ChromeHttpLoginCredentials.html)\* del atributo HttpLoginCredentials. Esto puede variar de la url que realmente desea renderizar como PDF. - Los datos a enviar deben representar cada entrada y textarea del formulario HTML. Los atributos name definen el nombre de cada variable (no el id como se suele malinterpretar). - Algunos sitios web pueden proteger activamente contra este tipo de inicio de sesión de la máquina. ## MVC La siguiente solución permite que una vista MVC de .NET se convierta mediante programación en una cadena, lo que resulta muy útil para evitar los inicios de sesión en MVC y, al mismo tiempo, convertir una vista fielmente. ```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; } } ```