Comment exécuter HTML to PDF avec .NET sur Azure ?
Oui. IronPDF peut être utilisé pour générer, manipuler et lire des documents PDF sur Azure. IronPDF a été minutieusement testé sur plusieurs plateformes Azure, notamment les sites web MVC, Azure Functions, et bien d'autres encore.
Azure Functions sur Docker
Si vous exécutez Azure Functions dans un conteneur Docker, veuillez vous référer au document suivantce tutoriel Azure Docker Linux au lieu de cela.
Comment créer un générateur de PDF dans Azure Function
- 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 la case
Exécution à partir d'un fichier paquet
option 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 à l'aide d'Azure
Comment faire Tutoriel
Mise en place du projet
Installation d'IronPDF pour commencer
La première étape consiste à installer IronPDF à l'aide de NuGet :
- Sur les fonctions Azure basées sur Windows, utilisez le package
IronPdf
-Paquet NuGet IronPdf pour Windows - Sur les fonctions Azure basées sur Linux, utilisez le package
IronPdf.Linux
-Paquet NuGet IronPdf pour Linux
Install-Package IronPdf
Il est également possible d'installer manuellement le fichier .dll à l'aide de la commandeIronPDF paquet de téléchargement direct pour Azure lien.
Sélectionner les options Azure correctes
Choisir le bon niveau d'hébergement Azure Tier
Azure Basic B1 est le niveau d'hébergement minimum requis pour les besoins de rendu de nos utilisateurs finaux. Si vous créez un système à haut débit, il peut être nécessaire de le mettre à niveau.
Avant de procéder
La case à cocher "Exécuter à partir d'un fichier paquet"
Lorsque vous publiez votre application Azure Functions, assurez-vous que l'option "Exécuter à partir d'un fichier package" n'est PAS sélectionnée.
Configuration pour .NET 6
Microsoft a récemment supprimé les bibliothèques d'imagerie de .NET 6+, brisant ainsi de nombreuses API héritées. Il est donc nécessaire de configurer votre projet pour qu'il continue à autoriser ces appels d'API hérités.
Sous Linux, configurez
Installation.LinuxAndDockerDependenciesAutoConfig=true;
pour vous assurer quelibgdiplus
est installé sur la machineAjoutez ce qui suit au fichier .csproj de votre projet .NET 6 :
<GenerateRuntimeConfigurationFiles>vrai</GenerateRuntimeConfigurationFiles>
- Créez un fichier dans votre projet appelé
runtimeconfig.template.json
et remplissez-le avec ce qui suit :
{
"configProperties": {
"System.Drawing.EnableUnixSupport": true
}
}
{
"configProperties": {
"System.Drawing.EnableUnixSupport": true
}
}
If True Then
"configProperties":
If True Then
"System.Drawing.EnableUnixSupport": True
End If
End If
- Enfin, ajoutez la ligne suivante au début de votre programme :
System.AppContext.SetSwitch("System.Drawing.EnableUnixSupport", true);
Utiliser Docker sur Azure
L'une des façons d'obtenir le contrôle, l'accès aux polices SVG et la possibilité de contrôler les performances sur Azure est d'utiliser les applications et les fonctions IronPDF à partir de conteneurs Docker.
Nous disposons d'uneIronPDF Azure Docker tutoriel la traduction est disponible pour les instances Linux et Windows, et sa lecture est recommandée.
Exemple de code de fonction Azure
Cet exemple génère automatiquement des entrées de journal dans le journal Azure intégré(voir ILogger log
):
[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";
// Enable log
IronPdf.Logging.Logger.LoggingMode = IronPdf.Logging.Logger.LoggingModes.Custom;
IronPdf.Logging.Logger.CustomLogger = log;
IronPdf.Logging.Logger.EnableDebugging = false;
// Configure IronPdf
Installation.LinuxAndDockerDependenciesAutoConfig = false;
Installation.ChromeGpuMode = IronPdf.Engines.Chrome.ChromeGpuModes.Disabled;
try
{
log.LogInformation("About to render pdf...");
ChromePdfRenderer renderer = new ChromePdfRenderer();
// Render PDF
var pdf = renderer.RenderUrlAsPdf("https://www.google.com/");
log.LogInformation("finished rendering pdf...");
return new FileContentResult(pdf.BinaryData, "application/pdf") { FileDownloadName = "google.pdf" };
}
catch (Exception e)
{
log.LogError(e, "Error while rendering pdf", e);
}
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";
// Enable log
IronPdf.Logging.Logger.LoggingMode = IronPdf.Logging.Logger.LoggingModes.Custom;
IronPdf.Logging.Logger.CustomLogger = log;
IronPdf.Logging.Logger.EnableDebugging = false;
// Configure IronPdf
Installation.LinuxAndDockerDependenciesAutoConfig = false;
Installation.ChromeGpuMode = IronPdf.Engines.Chrome.ChromeGpuModes.Disabled;
try
{
log.LogInformation("About to render pdf...");
ChromePdfRenderer renderer = new ChromePdfRenderer();
// Render PDF
var pdf = renderer.RenderUrlAsPdf("https://www.google.com/");
log.LogInformation("finished rendering pdf...");
return new FileContentResult(pdf.BinaryData, "application/pdf") { FileDownloadName = "google.pdf" };
}
catch (Exception e)
{
log.LogError(e, "Error while rendering pdf", e);
}
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"
' Enable log
IronPdf.Logging.Logger.LoggingMode = IronPdf.Logging.Logger.LoggingModes.Custom
IronPdf.Logging.Logger.CustomLogger = log
IronPdf.Logging.Logger.EnableDebugging = False
' Configure IronPdf
Installation.LinuxAndDockerDependenciesAutoConfig = False
Installation.ChromeGpuMode = IronPdf.Engines.Chrome.ChromeGpuModes.Disabled
Try
log.LogInformation("About to render pdf...")
Dim renderer As New ChromePdfRenderer()
' Render PDF
Dim pdf = renderer.RenderUrlAsPdf("https://www.google.com/")
log.LogInformation("finished rendering pdf...")
Return New FileContentResult(pdf.BinaryData, "application/pdf") With {.FileDownloadName = "google.pdf"}
Catch e As Exception
log.LogError(e, "Error while rendering pdf", e)
End Try
Return New OkObjectResult("OK")
End Function
Problèmes connus
Le rendu des polices SVG n'est pas disponible sur les plans d'hébergement mutualisé
L'une des limites que nous avons constatées est que lePrésentation de la plateforme d'hébergement Azure ne prend pas en charge les serveurs qui chargent des polices SVG, telles que Google Fonts, dans leurs applications web partagées les moins chères. En effet, pour des raisons de sécurité, ces plateformes d'hébergement partagé ne sont pas autorisées à accéder aux objets graphiques Windows GDI+.
Nous recommandons d'utiliser unGuide des conteneurs Docker Windows ou Linux pour IronPdf.Linux ou peut-être un VPS sur Azure pour résoudre ce problème lorsque le meilleur rendu des polices est nécessaire.
L'hébergement Azure gratuit est lent
Les niveaux gratuits et partagés d'Azure, ainsi que le plan de consommation, ne sont pas adaptés au rendu des PDF. Nous recommandons l'hébergement Azure B1/Plan Premium, que nous utilisons nous-mêmes. Le processus de conversion du HTML en PDF représente un travail important pour n'importe quel ordinateur - similaire à l'ouverture et au rendu d'une page web sur votre propre machine. Un véritable moteur de navigateur est utilisé, il faut donc prévoir des provisions en conséquence et s'attendre à des temps de rendu similaires à ceux d'un ordinateur de bureau de même puissance.
Création d'un ticket de demande d'assistance technique
Pour créer un ticket de demande, veuillez vous référer à l'adresse suivanteComment faire une demande d'assistance technique pour IronPDF guide.