Comment générer HTML en PDF avec .NET sur Azure

Comment utiliser C# ; pour la conversion de HTML en PDF avec IronPDF sur Azure Function

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

IronPDF génère, manipule et lit des documents PDF sur les plateformes Azure, notamment les sites web MVC et les Azure Functions. Ce guide montre comment mettre en œuvre la conversion HTML-PDF dans Azure Functions avec une configuration et une optimisation appropriées pour les environnements de production.

Si vous exécutez Azure Functions dans un conteneur Docker, veuillez vous référer à ce tutoriel Azure Docker Linux à la place.

comme-titre:2(Démarrage rapide : Conversion HTML en PDF avec IronPDF sur Azure)

Commencez à convertir HTML en PDF dans vos applications Azure à l'aide d'IronPDF. Ce guide rapide montre comment rendre une URL en tant que document PDF à l'aide des méthodes de l'API d'IronPDF. Cet exemple illustre la simplicité d'IronPDF pour l'intégration des fonctionnalités PDF dans les solutions Azure. Suivez l'exemple pour commencer à générer des PDF sans perdre le formatage et pour lancer rapidement votre projet Azure.

Nuget IconCommencez dès maintenant à créer des PDF avec NuGet :

  1. Installez IronPDF avec le gestionnaire de packages NuGet

    PM > Install-Package IronPdf

  2. Copiez et exécutez cet extrait de code.

    var pdf = new IronPdf.ChromePdfRenderer()
        .RenderHtmlAsPdf("<h1>Hello Azure!</h1>")
        .SaveAs("output-azure.pdf");
  3. Déployez pour tester sur votre environnement de production.

    Commencez à utiliser IronPDF dans votre projet dès aujourd'hui grâce à un essai gratuit.
    arrow pointer

Didacticiel de prise en main

Comment configurer mon projet?

<TODO : Ajouter une image ici -->

Quel package IronPDF dois-je installer?

La première étape est d'installer IronPDF en utilisant NuGet :

Install-Package IronPdf

Alternativement, installez manuellement le .dll en utilisant le lien Package de téléchargement direct de IronPDF pour Azure.

Pour des options d'installation plus avancées, consultez notre guide complet Packages NuGet.

Quelles sont les options Azure que je dois configurer ?

Quel niveau d'hébergement Azure dois-je choisir?

Azure Basic B1 est le niveau d'hébergement minimum requis pour les besoins de rendu. Si vous créez un système à haut débit, cela peut nécessiter une mise à niveau. Le niveau B1 fournit suffisamment de ressources pour le Chrome PDF Rendering Engine qui alimente la conversion HTML vers PDF d'IronPdf.

AvertissementFailure to select a Plan Type of App service plan may result in IronPdf failing to render PDF documents.

Formulaire de création d'une application Azure Function avec l'option de plan de service App mise en évidence dans le menu déroulant Type de plan

Pourquoi devrais-je décocher la case "Exécuter à partir d'un fichier paquet" ?

Lors de la publication de votre application Azure Functions, assurez-vous que Exécuter à partir du fichier de package n'est PAS sélectionné. Cette option crée un déploiement en lecture seule qui empêche IronPDF d'extraire les dépendances d'exécution nécessaires pendant l'exécution.

La boîte de dialogue de publication d'Azure Functions affiche l'option décochée

Comment configurer .NET 6?

Microsoft a récemment supprimé les bibliothèques d'imagerie de .NET 6+, cassant de nombreuses API héritées. En tant que tel, il est nécessaire de configurer votre projet pour permettre encore ces appels d'API hérités.

  1. Sous Linux, définissez Installation.LinuxAndDockerDependenciesAutoConfig=true; pour vous assurer que libgdiplus est installé sur la machine
  2. Ajoutez ce qui suit au fichier .csproj de votre projet .NET 6 :
    <GenerateRuntimeConfigurationFiles>true</GenerateRuntimeConfigurationFiles>
    <GenerateRuntimeConfigurationFiles>true</GenerateRuntimeConfigurationFiles>
    XML
  3. Créez un fichier dans votre projet appelé runtimeconfig.template.json et remplissez-le avec ce qui suit :

    {
      "configProperties": {
        "System.Drawing.EnableUnixSupport": true
      }
    }
  4. Enfin, ajoutez la ligne suivante au début de votre programme pour activer la prise en charge d'Unix pour System.Drawing :
    System.AppContext.SetSwitch("System.Drawing.EnableUnixSupport", true);
    System.AppContext.SetSwitch("System.Drawing.EnableUnixSupport", true);
    $vbLabelText   $csharpLabel

Quand utiliser Docker sur Azure?

Une manière d'obtenir contrôle, accès aux polices SVG, et la capacité de contrôler les performances sur Azure est d'utiliser des applications et fonctions IronPDF depuis les conteneurs Docker. Cette approche permet de mieux contrôler l'environnement d'exécution et d'éliminer de nombreuses limitations liées à la plate-forme.

Nous avons un tutoriel complet Docker Azure IronPDF pour les instances Linux et Windows, et il est recommandé de le consulter.

À quoi ressemble le code de la fonction Azure?

Cet exemple génère automatiquement des entrées de journal vers le journal Azure intégré (voir ILogger log). Pour des configurations détaillées de la journalisation, consultez notre Guide de la journalisation personnalisée.

[FunctionName("PrintPdf")]
public static async Task<IActionResult> Run(
    [HttpTrigger(AuthorizationLevel.Anonymous, "get", "post", Route = null)] HttpRequest req,
    ILogger log, ExecutionContext context)
{
    log.LogInformation("Entered PrintPdf API function...");

    // Apply license key
    IronPdf.License.LicenseKey = "IRONPDF-MYLICENSE-KEY-1EF01";

    // Configure logging
    IronPdf.Logging.Logger.LoggingMode = IronPdf.Logging.Logger.LoggingModes.Custom;
    IronPdf.Logging.Logger.CustomLogger = log;
    IronPdf.Logging.Logger.EnableDebugging = false;

    // Configure IronPdf settings
    Installation.LinuxAndDockerDependenciesAutoConfig = false;
    Installation.ChromeGpuMode = IronPdf.Engines.Chrome.ChromeGpuModes.Disabled;

    try
    {
        log.LogInformation("About to render pdf...");

        // Create a renderer and render the URL as PDF
        ChromePdfRenderer renderer = new ChromePdfRenderer();
        var pdf = renderer.RenderUrlAsPdf("https://www.google.com/");

        log.LogInformation("Finished rendering pdf...");

        // Return the rendered PDF as a file download
        return new FileContentResult(pdf.BinaryData, "application/pdf") { FileDownloadName = "google.pdf" };
    }
    catch (Exception e)
    {
        log.LogError(e, "Error while rendering pdf");
    }

    return new OkObjectResult("OK");
}
[FunctionName("PrintPdf")]
public static async Task<IActionResult> Run(
    [HttpTrigger(AuthorizationLevel.Anonymous, "get", "post", Route = null)] HttpRequest req,
    ILogger log, ExecutionContext context)
{
    log.LogInformation("Entered PrintPdf API function...");

    // Apply license key
    IronPdf.License.LicenseKey = "IRONPDF-MYLICENSE-KEY-1EF01";

    // Configure logging
    IronPdf.Logging.Logger.LoggingMode = IronPdf.Logging.Logger.LoggingModes.Custom;
    IronPdf.Logging.Logger.CustomLogger = log;
    IronPdf.Logging.Logger.EnableDebugging = false;

    // Configure IronPdf settings
    Installation.LinuxAndDockerDependenciesAutoConfig = false;
    Installation.ChromeGpuMode = IronPdf.Engines.Chrome.ChromeGpuModes.Disabled;

    try
    {
        log.LogInformation("About to render pdf...");

        // Create a renderer and render the URL as PDF
        ChromePdfRenderer renderer = new ChromePdfRenderer();
        var pdf = renderer.RenderUrlAsPdf("https://www.google.com/");

        log.LogInformation("Finished rendering pdf...");

        // Return the rendered PDF as a file download
        return new FileContentResult(pdf.BinaryData, "application/pdf") { FileDownloadName = "google.pdf" };
    }
    catch (Exception e)
    {
        log.LogError(e, "Error while rendering pdf");
    }

    return new OkObjectResult("OK");
}
$vbLabelText   $csharpLabel

Exemple de rendu de chaîne HTML avancé

Pour des scénarios plus complexes impliquant du HTML personnalisé avec un style CSS, vous pouvez utiliser les fonctionnalités HTML String to PDF :

[FunctionName("RenderHtmlWithCss")]
public static async Task<IActionResult> RenderHtmlWithCss(
    [HttpTrigger(AuthorizationLevel.Function, "post", Route = null)] HttpRequest req,
    ILogger log)
{
    log.LogInformation("Processing HTML to PDF request");

    // Read HTML content from request body
    string htmlContent = await new StreamReader(req.Body).ReadToEndAsync();

    // Configure renderer with custom options
    var renderer = new ChromePdfRenderer()
    {
        RenderingOptions = new ChromePdfRenderOptions()
        {
            MarginTop = 20,
            MarginBottom = 20,
            MarginLeft = 10,
            MarginRight = 10,
            CssMediaType = IronPdf.Rendering.PdfCssMediaType.Print,
            PrintHtmlBackgrounds = true,
            CreatePdfFormsFromHtml = true
        }
    };

    try
    {
        // Add custom CSS
        string styledHtml = $@"
            <html>
            <head>
                <style>
                    body {{ font-family: Arial, sans-serif; padding: 20px; }}
                    h1 {{ color: #2c3e50; }}
                    .highlight {{ background-color: #f1c40f; padding: 5px; }}
                </style>
            </head>
            <body>
                {htmlContent}
            </body>
            </html>";

        var pdf = renderer.RenderHtmlAsPdf(styledHtml);

        return new FileContentResult(pdf.BinaryData, "application/pdf") 
        { 
            FileDownloadName = "styled-document.pdf" 
        };
    }
    catch (Exception ex)
    {
        log.LogError(ex, "Failed to render HTML to PDF");
        return new BadRequestObjectResult("Error processing HTML content");
    }
}
[FunctionName("RenderHtmlWithCss")]
public static async Task<IActionResult> RenderHtmlWithCss(
    [HttpTrigger(AuthorizationLevel.Function, "post", Route = null)] HttpRequest req,
    ILogger log)
{
    log.LogInformation("Processing HTML to PDF request");

    // Read HTML content from request body
    string htmlContent = await new StreamReader(req.Body).ReadToEndAsync();

    // Configure renderer with custom options
    var renderer = new ChromePdfRenderer()
    {
        RenderingOptions = new ChromePdfRenderOptions()
        {
            MarginTop = 20,
            MarginBottom = 20,
            MarginLeft = 10,
            MarginRight = 10,
            CssMediaType = IronPdf.Rendering.PdfCssMediaType.Print,
            PrintHtmlBackgrounds = true,
            CreatePdfFormsFromHtml = true
        }
    };

    try
    {
        // Add custom CSS
        string styledHtml = $@"
            <html>
            <head>
                <style>
                    body {{ font-family: Arial, sans-serif; padding: 20px; }}
                    h1 {{ color: #2c3e50; }}
                    .highlight {{ background-color: #f1c40f; padding: 5px; }}
                </style>
            </head>
            <body>
                {htmlContent}
            </body>
            </html>";

        var pdf = renderer.RenderHtmlAsPdf(styledHtml);

        return new FileContentResult(pdf.BinaryData, "application/pdf") 
        { 
            FileDownloadName = "styled-document.pdf" 
        };
    }
    catch (Exception ex)
    {
        log.LogError(ex, "Failed to render HTML to PDF");
        return new BadRequestObjectResult("Error processing HTML content");
    }
}
$vbLabelText   $csharpLabel

Pour la gestion des licences dans vos IronPDF, consultez notre documentation Utilisation des clés de licence.

Quels sont les problèmes connus ?

Pourquoi les polices SVG ne s'affichent-elles pas sur les plans d'hébergement partagés ?

Une limitation est que la plateforme d'hébergement Azure ne prend pas en charge les serveurs chargeant les polices SVG, telles que Google Fonts, dans leurs niveaux de web-apps partagées moins coûteux. Ceci est dû aux restrictions de sécurité empêchant l'accès aux objets graphiques Windows GDI+.

Nous recommandons d'utiliser un guide de conteneur Docker Windows ou Linux pour IronPDF ou peut-être un VPS sur Azure pour contourner ce problème là où le meilleur rendu de police est requis.

Pourquoi l'hébergement Azure Free Tier est-il lent ?

Les niveaux gratuits et partagés d'Azure, ainsi que le plan de consommation, ne conviennent pas au rendu PDF. Nous recommandons l'hébergement Azure B1/plan Premium, que nous utilisons nous-mêmes. Le processus de HTML to PDF représente un travail significatif pour tout ordinateur - similaire à ouvrir et rendre une page web sur votre propre machine. Un véritable moteur de navigateur est utilisé, d'où la nécessité de prévoir en conséquence et de s'attendre à des temps de rendu similaires à ceux d'une machine de bureau de puissance similaire.

Comment déboguer localement Azure Functions?

Pour le développement et les tests locaux, consultez notre guide sur Débogage du projet Azure Functions sur une machine locale. Cela vous aidera à identifier et à résoudre les problèmes avant le déploiement sur Azure.

Où puis-je trouver les journaux Azure ?

Lors de la résolution de problèmes de génération de PDF, les journaux Azure sont d'une valeur inestimable. Consultez notre guide Fichiers journaux Azure pour obtenir des instructions sur l'accès et l'interprétation des journaux spécifiques aux opérations IronPDF.

Comment créer une demande d'assistance technique?

Pour créer un ticket de demande, reportez-vous au guide How to Make an Engineering Support Request for IronPDF.

Bonnes pratiques pour la production

  1. Toujours utiliser les niveaux d'hébergement appropriés - B1 ou plus pour des performances fiables
  2. Configurer correctement la journalisation - Utiliser Azure Application Insights pour la surveillance de la production
  3. Gérer les exceptions avec élégance - Mettre en œuvre une logique de réessai pour les défaillances transitoires
  4. Optimiser le contenu HTML - Minimiser les ressources externes et utiliser des images codées en base64 lorsque cela est possible
  5. Tester minutieusement - Valider la génération de PDF localement avant le déploiement dans Azure
  6. Surveiller l'utilisation des ressources - Suivre la consommation de la mémoire et de l'unité centrale pour adapter l'échelle de manière appropriée

Questions Fréquemment Posées

Quel est le niveau minimum d'hébergement Azure requis pour la génération de PDF ?

IronPDF requiert le niveau B1 d'Azure Basic comme niveau d'hébergement minimum pour les besoins de rendu PDF. Le niveau B1 fournit suffisamment de ressources pour le moteur de rendu PDF de Chrome qui alimente les capacités de conversion HTML vers PDF d'IronPDF.

Quel package dois-je installer pour Azure Functions basé sur Windows ?

Pour les fonctions Azure basées sur Windows, installez le package IronPdf à partir de NuGet. Ce package est optimisé pour les environnements Windows et fournit des fonctionnalités complètes de génération de PDF avec le moteur de rendu Chrome.

Comment convertir du HTML en PDF dans Azure Functions ?

Vous pouvez convertir du HTML en PDF avec une seule ligne de code en utilisant le ChromePdfRenderer d'IronPdf. Il suffit de créer une nouvelle instance et d'appeler RenderHtmlAsPdf() avec votre contenu HTML, puis d'enregistrer le fichier PDF résultant.

Que se passe-t-il si je ne sélectionne pas le plan de service approprié ?

Si le type de plan de service App n'est pas sélectionné, IronPDF risque de ne pas rendre les documents PDF. Une configuration correcte de l'environnement d'hébergement Azure est essentielle pour que le moteur de rendu PDF fonctionne correctement.

Pourquoi la case "Exécuter à partir d'un fichier paquet" doit-elle être décochée lors de la publication ?

Lors de la publication de votre application Azure Functions, la case 'Run from package file' doit être décochée pour qu'IronPDF puisse accéder et utiliser correctement ses composants de rendu et ses dépendances dans l'environnement Azure.

Puis-je utiliser Azure Functions basé sur Linux pour la génération de PDF ?

Oui, pour les fonctions Azure basées sur Linux, utilisez le package IronPdf.Linux de NuGet. Ce package est spécifiquement optimisé pour les environnements Linux tout en offrant les mêmes capacités de génération de PDF.

Que faire si j'ai besoin d'un débit plus élevé pour la génération de PDF ?

Pour les systèmes à haut débit, vous pouvez avoir besoin d'une mise à niveau au-delà du niveau B1. IronPDF évolue avec vos ressources Azure, ce qui vous permet de gérer des demandes de génération de PDF accrues en sélectionnant des niveaux de performance plus élevés.

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 17,012,929 | Version : 2025.12 vient de sortir