Comment gérer les connexions et l'authentification en utilisant C#

How to Convert HTML to PDF Behind Login Authentication

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

The best way to deal with logins is to avoid them if possible and render HTML directly from a file or a string.

Quickstart: Convert HTML to PDF Behind Login with IronPDF

Easily convert HTML pages to PDFs, even when they're behind login forms, using IronPDF's simple and effective API. This quickstart guide shows you how to use the ChromeHttpLoginCredentials method to authenticate and retrieve protected content, ensuring a seamless conversion process. Whether you're dealing with network authentication or HTML form logins, IronPDF streamlines the process, saving you time and effort.

Nuget IconGet started making PDFs with NuGet now:

  1. Install IronPDF with NuGet Package Manager

    PM > Install-Package IronPdf

  2. Copy and run this code snippet.

    new ChromePdfRenderer { LoginCredentials = new ChromeHttpLoginCredentials("username","password") }
        .RenderUrlAsPdf("https://example.com/protected")
        .SaveAs("secure.pdf");
  3. Deploy to test on your live environment

    Start using IronPDF in your project today with a free trial
    arrow pointer


Bonnes pratiques

IronPDF supports TLS network authentication (username and password) and .NET web apps can easily support it: ChromeHttpLoginCredentials API

The best practice is to use System.Net.WebClient or HttpClient to download the HTML and any assets. This fully supports headers, logins, and everything else you may require. Once downloaded to memory or the disk, IronPDF can turn your HTML into a PDF. Assets such as stylesheets and images can be discovered using the HtmlAgilityPack and then downloaded using the System.Net.WebClient as well.

// Download HTML content from a URL
string html;
using (WebClient client = new WebClient()) 
{
    html = client.DownloadString("http://www.google.com");
}

// Load the HTML into an HtmlDocument
HtmlDocument doc = new HtmlDocument();        
doc.LoadHtml(html);

// Iterate through all image nodes and print their src attributes
foreach(HtmlNode img in doc.DocumentNode.SelectNodes("//img")) 
{
    Console.WriteLine(img.GetAttributeValue("src", null));
}
// Download HTML content from a URL
string html;
using (WebClient client = new WebClient()) 
{
    html = client.DownloadString("http://www.google.com");
}

// Load the HTML into an HtmlDocument
HtmlDocument doc = new HtmlDocument();        
doc.LoadHtml(html);

// Iterate through all image nodes and print their src attributes
foreach(HtmlNode img in doc.DocumentNode.SelectNodes("//img")) 
{
    Console.WriteLine(img.GetAttributeValue("src", null));
}
' Download HTML content from a URL
Dim html As String
Using client As New WebClient()
	html = client.DownloadString("http://www.google.com")
End Using

' Load the HTML into an HtmlDocument
Dim doc As New HtmlDocument()
doc.LoadHtml(html)

' Iterate through all image nodes and print their src attributes
For Each img As HtmlNode In doc.DocumentNode.SelectNodes("//img")
	Console.WriteLine(img.GetAttributeValue("src", Nothing))
Next img
$vbLabelText   $csharpLabel

Veuillez noterAny relative Url can be rebased to an absolute url using an overloaded constructor for the System.Uri class. To rebase any relative paths in an entire HTML document, add a <base> tag to the header using HtmlAgilityPack. Example.

Login using Network Authentication

Most ASP.NET applications support network authentication, which is more reliable than HTML form posting.

:path=/static-assets/pdf/content-code-examples/how-to/logins-username-password.cs
using IronPdf;
using System;

ChromePdfRenderer renderer = new ChromePdfRenderer
{
    // setting login credentials to bypass basic authentication
    LoginCredentials = new ChromeHttpLoginCredentials()
    {
        NetworkUsername = "testUser",
        NetworkPassword = "testPassword"
    }
};

var uri = new Uri("http://localhost:51169/Invoice");

// Render web URL to PDF
PdfDocument pdf = renderer.RenderUrlAsPdf(uri);

// Export PDF
pdf.SaveAs("UrlToPdfExample.Pdf");
Imports IronPdf
Imports System

Private renderer As New ChromePdfRenderer With {
	.LoginCredentials = New ChromeHttpLoginCredentials() With {
		.NetworkUsername = "testUser",
		.NetworkPassword = "testPassword"
	}
}

Private uri = New Uri("http://localhost:51169/Invoice")

' Render web URL to PDF
Private pdf As PdfDocument = renderer.RenderUrlAsPdf(uri)

' Export PDF
pdf.SaveAs("UrlToPdfExample.Pdf")
$vbLabelText   $csharpLabel

Login using an HTML Form

To log in by sending data to an HTML form may also be achieved using the ChromeHttpLoginCredentials class, as in the previous example. See IronPDF's ChromeHttpLoginCredentials API.

Please Consider:

  • The login data must be posted to the URL specified in the HTML form's ACTION attribute. This should be set as the *LoginFormUrl* attribute of the HttpLoginCredentials. This may vary from the URL you actually want to render as a PDF.
  • The data to be sent should represent every input and textarea in the HTML form. The name attributes define the name of each variable (not the id, as is commonly misunderstood).
  • Some websites may actively protect against this kind of machine login.

MVC

The following workaround allows a .NET MVC view to be rendered programmatically to a string, which is very useful in avoiding MVC logins yet rendering a view faithfully.

// Converts an MVC partial view to a string
public static string RenderPartialViewToString(this Controller controller, string viewPath, object model = null)
{
    try
    {
        // Set the model
        var context = controller.ControllerContext;
        controller.ViewData.Model = model;

        using (var sw = new StringWriter())
        {
            // Find the partial view
            var viewResult = ViewEngines.Engines.FindPartialView(context, viewPath);

            if (viewResult.View == null)
            {
                throw new Exception($"Partial view {viewPath} could not be found.");
            }

            // Create a view context
            var viewContext = new ViewContext(context, viewResult.View, context.Controller.ViewData, context.Controller.TempData, sw);

            // Render the view
            viewResult.View.Render(viewContext, sw);
            viewResult.ViewEngine.ReleaseView(context, viewResult.View);

            return sw.GetStringBuilder().ToString();
        }
    }
    catch (Exception ex)
    {
        // Return error message if there is an exception
        return ex.Message;
    }
}
// Converts an MVC partial view to a string
public static string RenderPartialViewToString(this Controller controller, string viewPath, object model = null)
{
    try
    {
        // Set the model
        var context = controller.ControllerContext;
        controller.ViewData.Model = model;

        using (var sw = new StringWriter())
        {
            // Find the partial view
            var viewResult = ViewEngines.Engines.FindPartialView(context, viewPath);

            if (viewResult.View == null)
            {
                throw new Exception($"Partial view {viewPath} could not be found.");
            }

            // Create a view context
            var viewContext = new ViewContext(context, viewResult.View, context.Controller.ViewData, context.Controller.TempData, sw);

            // Render the view
            viewResult.View.Render(viewContext, sw);
            viewResult.ViewEngine.ReleaseView(context, viewResult.View);

            return sw.GetStringBuilder().ToString();
        }
    }
    catch (Exception ex)
    {
        // Return error message if there is an exception
        return ex.Message;
    }
}
' Converts an MVC partial view to a string
<System.Runtime.CompilerServices.Extension> _
Public Function RenderPartialViewToString(ByVal controller As Controller, ByVal viewPath As String, Optional ByVal model As Object = Nothing) As String
	Try
		' Set the model
		Dim context = controller.ControllerContext
		controller.ViewData.Model = model

		Using sw = New StringWriter()
			' Find the partial view
			Dim viewResult = ViewEngines.Engines.FindPartialView(context, viewPath)

			If viewResult.View Is Nothing Then
				Throw New Exception($"Partial view {viewPath} could not be found.")
			End If

			' Create a view context
			Dim viewContext As New ViewContext(context, viewResult.View, context.Controller.ViewData, context.Controller.TempData, sw)

			' Render the view
			viewResult.View.Render(viewContext, sw)
			viewResult.ViewEngine.ReleaseView(context, viewResult.View)

			Return sw.GetStringBuilder().ToString()
		End Using
	Catch ex As Exception
		' Return error message if there is an exception
		Return ex.Message
	End Try
End Function
$vbLabelText   $csharpLabel

Prêt à voir ce que vous pouvez faire d'autre ? Consultez notre page de tutoriels ici : Convertir les PDFs

Questions Fréquemment Posées

Comment puis-je convertir du HTML en PDF sans nécessiter d'authentification de connexion?

Pour convertir du HTML en PDF sans authentification de connexion, rendez le HTML directement à partir d'un fichier ou d'une chaîne en utilisant IronPDF. Cette méthode contourne entièrement le besoin d'authentification.

Quelles sont les premières étapes pour convertir du HTML en PDF en C#?

Commencez par télécharger la bibliothèque C# IronPDF depuis NuGet. Une fois installée, vous pouvez utiliser ses méthodes pour rendre des documents HTML en PDF directement, même en traitant les scénarios avec authentification de connexion.

Quels outils sont recommandés pour télécharger du contenu HTML de manière sécurisée pour la conversion en PDF?

Utilisez System.Net.WebClient ou HttpClient pour télécharger du contenu HTML et des ressources comme les feuilles de style et les images. Ces outils prennent en charge les en-têtes et les connexions. HtmlAgilityPack peut être utilisé pour gérer la découverte des ressources et s'assurer que toutes les ressources nécessaires sont téléchargées.

Comment IronPDF gère-t-il l'authentification réseau pour convertir du HTML en PDF?

IronPDF prend en charge l'authentification réseau TLS avec la propriété LoginCredentials, fournissant une méthode sécurisée pour gérer l'authentification dans les applications ASP.NET.

Est-il possible d'effectuer une authentification de formulaire HTML en utilisant IronPDF?

Oui, vous pouvez utiliser la classe ChromeHttpLoginCredentials d'IronPDF pour gérer l'authentification de formulaire HTML. Assurez-vous que les données de connexion sont soumises à l'URL correcte, comme spécifié dans l'attribut ACTION du formulaire.

Comment puis-je contourner l'authentification de connexion MVC lors de la conversion de vues en PDF ?

Vous pouvez rendre une vue MVC en chaîne de manière programmatique, ce qui vous permet de contourner les connexions MVC tout en assurant un rendu précis de la vue.

Quelles précautions doivent être prises lors de l'utilisation de l'authentification de formulaire HTML pour la conversion en PDF?

Assurez-vous que tous les champs de formulaire et zones de texte sont correctement représentés dans les données publiées en utilisant leurs attributs nom. Sachez que certains sites peuvent avoir des protections en place pour empêcher les connexions automatiques.

IronPDF est-il entièrement compatible avec .NET 10 lors de l'utilisation d'identifiants de connexion pour convertir des URL protégées en PDF ?

Oui — IronPDF est entièrement compatible avec .NET 10, notamment grâce à l'utilisation ChromeHttpLoginCredentials pour l'authentification réseau et par formulaire lors de la conversion d'URL protégées en PDF.([ironpdf.com](https://ironpdf.com/blog/net-help/net-10-features/?utm_source=openai))

Curtis Chau
Rédacteur technique

Curtis Chau détient un baccalauréat en informatique (Université de Carleton) et se spécialise dans le développement front-end avec expertise en Node.js, TypeScript, JavaScript et React. Passionné par la création d'interfaces utilisateur intuitives et esthétiquement plaisantes, Curtis aime travailler avec des frameworks modernes ...

Lire la suite
Prêt à commencer?
Nuget Téléchargements 16,154,058 | Version : 2025.11 vient de sortir