Comment utiliser C# pour la conversion de HTML en PDF avec IronPDF sur Azure Functions
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.
Démarrage rapide : Conversion HTML vers 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.
-
Installez IronPDF avec le Gestionnaire de Packages NuGet
PM > Install-Package IronPdf -
Copiez et exécutez cet extrait de code.
var pdf = new IronPdf.ChromePdfRenderer() .RenderHtmlAsPdf("<h1>Hello Azure!</h1>") .SaveAs("output-azure.pdf"); -
Déployez pour tester sur votre environnement de production.
Commencez à utiliser IronPDF dans votre projet dès aujourd'hui avec un essai gratuit
Flux de travail minimal (5 étapes)
- Installer une bibliothèque C# pour générer des PDF dans Azure
- Choisissez le niveau d'hébergement Azure Basic B1 ou supérieur
- Décochez l'option `Exécuter à partir d'un fichier paquet` lors de la publication
- Suivez les instructions de configuration recommandées
- Utilisez l'exemple de code pour créer un générateur de PDF avec Azure
Didacticiel de prise en main
Comment configurer mon projet?
Quel package IronPDF dois-je installer?
La première étape est d'installer IronPDF en utilisant NuGet :
- Sur les fonctions Azure basées sur Windows, utilisez le package
IronPdf- Package NuGet IronPDF pour Windows - Sur les fonctions Azure basées sur Linux, utilisez le package
IronPdf.Linux- package NuGet IronPDF pour Linux
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.
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 Run from package file 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.
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.
- Sous Linux, définissez
Installation.LinuxAndDockerDependenciesAutoConfig=true;pour garantir quelibgdiplusest installé sur la machine - Ajoutez ce qui suit au fichier .csproj de votre projet .NET 6 :
<GenerateRuntimeConfigurationFiles>true</GenerateRuntimeConfigurationFiles><GenerateRuntimeConfigurationFiles>true</GenerateRuntimeConfigurationFiles>XML -
Créez un fichier dans votre projet appelé
runtimeconfig.template.jsonet remplissez-le avec les éléments suivants :{ "configProperties": { "System.Drawing.EnableUnixSupport": true } } - 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);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 envoie automatiquement les entrées de journal au journaliseur 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");
}
<FunctionName("PrintPdf")>
Public Shared Async Function Run(<HttpTrigger(AuthorizationLevel.Anonymous, "get", "post", Route := Nothing)> ByVal req As HttpRequest, ByVal log As ILogger, ByVal context As ExecutionContext) As Task(Of IActionResult)
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
Dim renderer As New ChromePdfRenderer()
Dim 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") With {.FileDownloadName = "google.pdf"}
Catch e As Exception
log.LogError(e, "Error while rendering pdf")
End Try
Return New OkObjectResult("OK")
End Function
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");
}
}
Imports System.IO
Imports System.Threading.Tasks
Imports Microsoft.AspNetCore.Mvc
Imports Microsoft.Azure.WebJobs
Imports Microsoft.Azure.WebJobs.Extensions.Http
Imports Microsoft.AspNetCore.Http
Imports Microsoft.Extensions.Logging
Imports IronPdf
Public Module HtmlToPdfFunction
<FunctionName("RenderHtmlWithCss")>
Public Async Function RenderHtmlWithCss(
<HttpTrigger(AuthorizationLevel.Function, "post", Route:=Nothing)> req As HttpRequest,
log As ILogger) As Task(Of IActionResult)
log.LogInformation("Processing HTML to PDF request")
' Read HTML content from request body
Dim htmlContent As String = Await New StreamReader(req.Body).ReadToEndAsync()
' Configure renderer with custom options
Dim renderer As New ChromePdfRenderer() With {
.RenderingOptions = New ChromePdfRenderOptions() With {
.MarginTop = 20,
.MarginBottom = 20,
.MarginLeft = 10,
.MarginRight = 10,
.CssMediaType = IronPdf.Rendering.PdfCssMediaType.Print,
.PrintHtmlBackgrounds = True,
.CreatePdfFormsFromHtml = True
}
}
Try
' Add custom CSS
Dim styledHtml As String = $"
<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>"
Dim pdf = renderer.RenderHtmlAsPdf(styledHtml)
Return New FileContentResult(pdf.BinaryData, "application/pdf") With {
.FileDownloadName = "styled-document.pdf"
}
Catch ex As Exception
log.LogError(ex, "Failed to render HTML to PDF")
Return New BadRequestObjectResult("Error processing HTML content")
End Try
End Function
End Module
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 HTML to PDF représente une charge de travail importante pour tout ordinateur, comparable à l'ouverture et à l'affichage d'une page web sur votre propre machine. Un véritable moteur de navigateur est utilisé ; il est donc nécessaire de prévoir les ressources nécessaires et de s'attendre à des temps de rendu similaires à ceux d'un ordinateur de bureau aux performances équivalentes.
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
- Utilisez toujours les niveaux d'hébergement appropriés -
B1ou supérieurs pour des performances fiables - Configurer correctement la journalisation - Utiliser Azure Application Insights pour la surveillance de la production
- Gérer les exceptions avec élégance - Mettre en œuvre une logique de réessai pour les défaillances transitoires
- Optimiser le contenu HTML - Minimiser les ressources externes et utiliser des images codées en base64 lorsque cela est possible
- Tester minutieusement - Valider la génération de PDF localement avant le déploiement dans Azure
- 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.

