Comment exécuter IronWord avec .NET sur Azure

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

IronWord est une puissante bibliothèque .NET permettant de créer, de modifier et de lire des documents Word par programmation. Il fonctionne parfaitement sur différents services Azure, notamment Azure App Services, Azure Functions et Azure Container Instances.

Installation d'IronWord

Commencez par installer le package NuGet IronWord depuis le dépôt NuGet officiel :

Install-Package IronWord

Considérations relatives à l'hébergement pour Azure

Choisir le niveau de service Azure approprié

IronWord offre des performances optimales sur les plans de service Azure qui fournissent une puissance de calcul constante. disponibilité. Pour la plupart des cas d'utilisation de petite et moyenne envergure, le plan de service d'application de base (B1) est suffisant. Si votre application traite un volume important de documents Word ou effectue Pour les tâches de mise en forme complexes, envisagez une mise à niveau vers Standard (S1) ou des niveaux supérieurs. éviter les goulots d'étranglement en termes de performances.

Environnements d'exécution .NET pris en charge et compatibilité

IronWord fonctionne immédiatement avec les frameworks suivants, couramment utilisés dans les solutions hébergées sur Azure :

  • .NET 6+ (LTS recommandé)
  • .NET Core 3.1
  • .NET Standard 2.1

Cela vous offre la flexibilité de déployer IronWord sur différents services Azure tels que App Services, Azure Functions et les conteneurs Docker sans vous soucier de la compatibilité.

Déploiement dans Docker sur Azure

Déploiement conteneurisé avec IronWord

Si vous recherchez un contrôle maximal sur votre environnement d'exécution, envisagez de déployer IronWord dans un conteneur Docker sur Azure Container Instances (ACI) ou Azure Kubernetes Service (AKS). Cela vous permet de :

  • Précharger les modèles ou les ressources statiques
  • Configurer les paramètres de traitement des documents
  • Optimiser les performances au niveau du système d'exploitation

Pour commencer, utilisez une image de base telle que mcr.microsoft.com/dotnet/aspnet:6.0 ou 7.0 et ajoutez IronWord via NuGet ou par inclusion manuelle de DLL.

Sans serveur avec Azure Functions

Utilisation d'IronWord dans Azure Functions

IronWord est entièrement compatible avec Azure Functions v4 exécuté sur .NET 6 ou supérieur. Cela permet une génération de documents légère et événementielle, idéale pour des scénarios tels que :

  • Création de rapports à la demande via HTTP
  • Générer des documents Word à partir des soumissions de formulaires
  • Conversion de données structurées au format .docx

Exemple de fonction Azure : Générer un document Word sur demande

Voici un exemple concret de fonction Azure qui crée et renvoie un document Word en réponse à une requête HTTP :

using System.Net;
using System.Net.Http;
using Microsoft.AspNetCore.Http;
using Microsoft.Azure.WebJobs;
using Microsoft.Azure.WebJobs.Extensions.Http;
using Microsoft.Extensions.Logging;
using System.Net.Http.Headers;
using IronWord;
using IronWord.Models;
using System.IO;
using System.Threading.Tasks;

public static class WordFunction
{
    [FunctionName("GenerateWordDoc")]
    public static HttpResponseMessage Run(
        [HttpTrigger(AuthorizationLevel.Anonymous, "get", "post", Route = null)] HttpRequest req,
        ILogger log)
    {
        log.LogInformation("Processing request to generate Word document...");

        // Set your IronWord license key
        IronWord.License.LicenseKey = "YOUR-LICENSE-KEY";

        // Create and populate Word document
        var doc = new WordDocument();
        Paragraph para1 = new Paragraph(new TextContent("This Word document was generated by IronWord in an Azure Function."));
        Paragraph para2 = new Paragraph(new TextContent($"Timestamp: {System.DateTime.UtcNow}"));
        doc.AddParagraph(para1);
        doc.AddParagraph(para2);

        // Save to temporary file
        string tempPath = Path.GetTempFileName().Replace(".tmp", ".docx");
        doc.SaveAs(tempPath);

        // Read the file bytes
        byte[] fileBytes = File.ReadAllBytes(tempPath);

        // Optionally delete the temp file
        File.Delete(tempPath);

        // Build the response with the document as an attachment
        var response = new HttpResponseMessage(HttpStatusCode.OK)
        {
            Content = new ByteArrayContent(fileBytes)
        };
        response.Content.Headers.ContentDisposition = new ContentDispositionHeaderValue("attachment")
        {
            FileName = $"IronWord_{System.DateTime.UtcNow:yyyyMMdd_HHmmss}.docx"
        };
        response.Content.Headers.ContentType = new MediaTypeHeaderValue(
            "application/vnd.openxmlformats-officedocument.wordprocessingml.document");

        return response;
    }
}
using System.Net;
using System.Net.Http;
using Microsoft.AspNetCore.Http;
using Microsoft.Azure.WebJobs;
using Microsoft.Azure.WebJobs.Extensions.Http;
using Microsoft.Extensions.Logging;
using System.Net.Http.Headers;
using IronWord;
using IronWord.Models;
using System.IO;
using System.Threading.Tasks;

public static class WordFunction
{
    [FunctionName("GenerateWordDoc")]
    public static HttpResponseMessage Run(
        [HttpTrigger(AuthorizationLevel.Anonymous, "get", "post", Route = null)] HttpRequest req,
        ILogger log)
    {
        log.LogInformation("Processing request to generate Word document...");

        // Set your IronWord license key
        IronWord.License.LicenseKey = "YOUR-LICENSE-KEY";

        // Create and populate Word document
        var doc = new WordDocument();
        Paragraph para1 = new Paragraph(new TextContent("This Word document was generated by IronWord in an Azure Function."));
        Paragraph para2 = new Paragraph(new TextContent($"Timestamp: {System.DateTime.UtcNow}"));
        doc.AddParagraph(para1);
        doc.AddParagraph(para2);

        // Save to temporary file
        string tempPath = Path.GetTempFileName().Replace(".tmp", ".docx");
        doc.SaveAs(tempPath);

        // Read the file bytes
        byte[] fileBytes = File.ReadAllBytes(tempPath);

        // Optionally delete the temp file
        File.Delete(tempPath);

        // Build the response with the document as an attachment
        var response = new HttpResponseMessage(HttpStatusCode.OK)
        {
            Content = new ByteArrayContent(fileBytes)
        };
        response.Content.Headers.ContentDisposition = new ContentDispositionHeaderValue("attachment")
        {
            FileName = $"IronWord_{System.DateTime.UtcNow:yyyyMMdd_HHmmss}.docx"
        };
        response.Content.Headers.ContentType = new MediaTypeHeaderValue(
            "application/vnd.openxmlformats-officedocument.wordprocessingml.document");

        return response;
    }
}
Imports System
Imports System.Net
Imports System.Net.Http
Imports Microsoft.AspNetCore.Http
Imports Microsoft.Azure.WebJobs
Imports Microsoft.Azure.WebJobs.Extensions.Http
Imports Microsoft.Extensions.Logging
Imports System.Net.Http.Headers
Imports IronWord
Imports IronWord.Models
Imports System.IO
Imports System.Threading.Tasks

Public Module WordFunction
	<FunctionName("GenerateWordDoc")>
	Public Function Run(<HttpTrigger(AuthorizationLevel.Anonymous, "get", "post", Route := Nothing)> ByVal req As HttpRequest, ByVal log As ILogger) As HttpResponseMessage
		log.LogInformation("Processing request to generate Word document...")

		' Set your IronWord license key
		IronWord.License.LicenseKey = "YOUR-LICENSE-KEY"

		' Create and populate Word document
		Dim doc = New WordDocument()
		Dim para1 As New Paragraph(New TextContent("This Word document was generated by IronWord in an Azure Function."))
		Dim para2 As New Paragraph(New TextContent($"Timestamp: {DateTime.UtcNow}"))
		doc.AddParagraph(para1)
		doc.AddParagraph(para2)

		' Save to temporary file
		Dim tempPath As String = Path.GetTempFileName().Replace(".tmp", ".docx")
		doc.SaveAs(tempPath)

		' Read the file bytes
		Dim fileBytes() As Byte = File.ReadAllBytes(tempPath)

		' Optionally delete the temp file
		File.Delete(tempPath)

		' Build the response with the document as an attachment
		Dim response = New HttpResponseMessage(HttpStatusCode.OK) With {.Content = New ByteArrayContent(fileBytes)}
		response.Content.Headers.ContentDisposition = New ContentDispositionHeaderValue("attachment") With {.FileName = $"IronWord_{DateTime.UtcNow:yyyyMMdd_HHmmss}.docx"}
		response.Content.Headers.ContentType = New MediaTypeHeaderValue("application/vnd.openxmlformats-officedocument.wordprocessingml.document")

		Return response
	End Function
End Module
$vbLabelText   $csharpLabel

Explication du code :

  1. Nous définissons une fonction Azure nommée " GenerateWordDoc ".
  2. La fonction est déclenchée par une requête HTTP GET ou POST et enregistre un message lorsqu'elle commence le traitement.
  3. Nous spécifions la clé de licence pour IronWord en définissant IronWord.License.LicenseKey (remplacez " VOTRE-CLÉ-DE-LICENCE " par votre clé réelle).
  4. Un nouveau document Word est créé à l'aide de l'API d'IronWord.
  5. Deux paragraphes sont ajoutés au document : l'un contenant du texte statique et l'autre affichant l'horodatage UTC actuel.
  6. Le document est enregistré dans un fichier .docx temporaire sur le serveur à l'aide de doc.SaveAs(tempPath).
  7. Le fichier enregistré est lu dans un tableau d'octets à l'aide de File.ReadAllBytes, le préparant ainsi pour le téléchargement.
  8. Le fichier temporaire est supprimé immédiatement après sa lecture afin de maintenir le système propre.
  9. Un HttpResponseMessage est créé, contenant le contenu binaire du document sous forme de pièce jointe téléchargeable.
  10. L'en-tête Content-Disposition définit le nom du fichier de téléchargement en utilisant la date et l'heure actuelles.
  11. L'en-tête Content-Type est défini sur " application/vnd.openxmlformats-officedocument.wordprocessingml.document " pour indiquer un format de fichier Word.

Questions Fréquemment Posées

Quelle est la première étape pour configurer IronWord sur Azure ?

La première étape pour configurer IronWord sur Azure est de créer un compte Azure si vous n'en avez pas déjà un. Ensuite, vous devez configurer un nouveau service d'application Azure où vous déploierez votre application .NET en utilisant IronWord.

Comment déployer une application .NET en utilisant IronWord sur Azure ?

Pour déployer une application .NET en utilisant IronWord sur Azure, vous devez emballer votre application et ses dépendances, y compris les bibliothèques IronWord, et les télécharger sur votre service d'application Azure. Vous pouvez utiliser des outils comme Visual Studio Publish ou des pipelines Azure DevOps pour ce processus.

Ai-je besoin d'un service Azure spécifique pour exécuter IronWord ?

IronWord peut être exécuté sur les services d'applications Azure standard. Cependant, pour des performances optimales, il est recommandé d'utiliser un plan qui fournit des ressources suffisantes selon les besoins de votre application.

IronWord peut-il être utilisé avec Azure Functions ?

Oui, IronWord peut être intégré avec Azure Functions pour traiter des documents Word dans le cadre d'une architecture sans serveur. Assurez-vous que l'environnement Azure Function dispose des dépendances nécessaires pour IronWord.

Comment IronWord améliore-t-il le traitement des documents Word sur Azure ?

IronWord améliore le traitement des documents Word sur Azure en fournissant des bibliothèques .NET puissantes qui peuvent facilement s'intégrer aux services Azure, permettant une création, une manipulation et une conversion efficaces des documents Word.

Existe-t-il un moyen d'automatiser les tâches d'IronWord sur Azure ?

Oui, vous pouvez automatiser les tâches d'IronWord sur Azure en utilisant Azure Logic Apps ou Azure Functions pour déclencher le traitement des documents Word en fonction d'événements ou de calendriers spécifiques.

Quels sont les avantages d'utiliser IronWord sur Azure ?

Utiliser IronWord sur Azure permet un traitement évolutif et fiable des documents Word, tirant parti de l'infrastructure cloud d'Azure pour gérer de grands volumes de documents tout en maintenant des performances élevées.

Puis-je intégrer IronWord avec Azure Blob Storage ?

Oui, vous pouvez intégrer IronWord avec Azure Blob Storage pour stocker et récupérer des documents Word, permettant un traitement et une gestion transparents des documents au sein de votre environnement Azure.

Comment puis-je garantir qu'IronWord fonctionne efficacement sur Azure ?

Pour garantir qu'IronWord fonctionne efficacement sur Azure, choisissez le bon plan de service qui correspond à votre charge de travail, optimisez le code de votre application et implémentez une gestion appropriée des erreurs et des journaux pour le dépannage.

Y a-t-il des préalables pour utiliser IronWord sur Azure ?

Les préalables pour utiliser IronWord sur Azure incluent la mise en place d'un environnement .NET, un compte Azure avec les autorisations nécessaires et les bibliothèques IronWord incluses dans votre projet.

Kye Stuart
Rédacteur technique

Kye Stuart fusionne la passion du codage et l'habileté rédactionnelle chez Iron Software. Éduqué au Yoobee College en déploiement de logiciels, ils transforment maintenant des concepts technologiques complexes en contenu éducatif clair. Kye valorise l'apprentissage tout au long de la vie et relève de nouveaux dé...

Lire la suite
Prêt à commencer?
Nuget Téléchargements 32,629 | Version : 2026.2 vient de sortir