Como executar o IronWord com .NET no Azure
IronWord é uma poderosa biblioteca .NET para criar, editar e ler documentos do Word programaticamente. Ele funciona perfeitamente em vários serviços do Azure, incluindo o Azure App Services, o Azure Functions e o Azure Container Instances.
Instalando o IronWord
Comece instalando o pacote NuGet IronWord do repositório oficial do NuGet :
Install-Package IronWord
Considerações sobre hospedagem no Azure
Como escolher o nível de serviço do Azure adequado
O IronWord tem melhor desempenho em planos de serviço do Azure que oferecem computação consistente. disponibilidade. Para a maioria dos casos de uso de pequeno a médio porte, o Plano Básico (B1) do Serviço de Aplicativos é suficiente. Se o seu aplicativo processa um grande volume de documentos do Word ou executa Para tarefas de formatação complexas, considere atualizar para o plano Standard (S1) ou superior. Evite gargalos de desempenho.
Runtimes .NET suportados e compatibilidade
O IronWord funciona imediatamente com as seguintes estruturas comumente usadas em soluções hospedadas no Azure:
- .NET 6+ (LTS recomendado)
- .NET Core 3.1
- .NET Standard 2.1
Isso oferece flexibilidade para implantar o IronWord em vários serviços do Azure, como Serviços de Aplicativos, Funções do Azure e contêineres Docker, sem se preocupar com a compatibilidade.
Implantação em Docker no Azure
Implantação em contêineres com IronWord
Se você busca o máximo controle sobre seu ambiente de execução, considere implantar o IronWord dentro de um contêiner Docker no Azure Container Instances (ACI) ou no Azure Kubernetes Service (AKS). Isso permite que você:
- Pré-carregar modelos ou recursos estáticos
- Configurar as definições de processamento de documentos
- Otimizar o desempenho no nível do sistema operacional
Para começar, use uma imagem base como mcr.microsoft.com/dotnet/aspnet:6.0 ou 7.0 e adicione o IronWord via NuGet ou inclusão manual de DLL.
Sem servidor com o Azure Functions
Utilizando o IronWord no Azure Functions
O IronWord é totalmente compatível com o Azure Functions v4 executado no .NET 6 ou superior. Isso possibilita a geração de documentos leves e orientados a eventos — perfeito para cenários como:
- Criação de relatórios sob demanda via HTTP
- Gerar documentos do Word a partir de formulários enviados
- Converter dados estruturados para o formato .docx
Exemplo de Função do Azure: Gerar documento do Word sob demanda
Abaixo, um exemplo prático de uma Função do Azure que cria e retorna um documento do Word em resposta a uma solicitação 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
Explicação do código:
- Definimos uma Função do Azure com o nome "GenerateWordDoc".
- A função é acionada por uma solicitação HTTP GET ou POST e registra uma mensagem quando inicia o processamento.
- Especificamos a chave de licença do IronWord definindo IronWord(substitua "YOUR-LICENSE-KEY" pela sua chave real).
- Um novo documento do Word é criado usando a API do IronWord.
- Dois parágrafos são adicionados ao documento — um com texto estático e outro mostrando o carimbo de data/hora UTC atual.
- O documento é salvo em um arquivo .docx temporário no servidor usando doc.SaveAs(tempPath).
- O arquivo salvo é lido em uma matriz de bytes usando File.ReadAllBytes, preparando-o para download.
- O arquivo temporário é apagado imediatamente após a leitura para manter o sistema limpo.
- Uma HttpResponseMessage é criada, contendo o conteúdo em bytes do documento como um anexo para download.
- O cabeçalho Content-Disposition define o nome do arquivo de download usando a data e hora atuais.
- O cabeçalho Content-Type está definido como "application/vnd.openxmlformats-officedocument.wordprocessingml.document" para indicar um formato de arquivo do Word.
Perguntas frequentes
Qual é o primeiro passo para configurar o IronWord no Azure?
O primeiro passo para configurar o IronWord no Azure é criar uma conta do Azure, caso ainda não possua uma. Em seguida, você precisa configurar um novo Serviço de Aplicativo do Azure onde implantará seu aplicativo .NET usando o IronWord.
Como faço para implantar um aplicativo .NET usando o IronWord no Azure?
Para implantar um aplicativo .NET usando o IronWord no Azure, você deve empacotar seu aplicativo e suas dependências, incluindo as bibliotecas do IronWord, e carregá-los no seu Serviço de Aplicativos do Azure. Você pode usar ferramentas como o Visual Studio Publish ou os pipelines do Azure DevOps para esse processo.
Preciso de algum serviço específico do Azure para executar o IronWord?
O IronWord pode ser executado nos Serviços de Aplicativos padrão do Azure. No entanto, para obter o melhor desempenho, recomenda-se usar um plano que forneça recursos suficientes com base nos requisitos do seu aplicativo.
O IronWord pode ser usado com o Azure Functions?
Sim, o IronWord pode ser integrado ao Azure Functions para processar documentos do Word como parte de uma arquitetura sem servidor. Certifique-se de que o ambiente do Azure Functions tenha as dependências necessárias para o IronWord.
Como o IronWord aprimora o processamento de documentos do Word no Azure?
O IronWord aprimora o processamento de documentos do Word no Azure, fornecendo poderosas bibliotecas .NET que podem ser facilmente integradas aos serviços do Azure, permitindo a criação, manipulação e conversão eficientes de documentos do Word.
Existe alguma forma de automatizar tarefas do IronWord no Azure?
Sim, você pode automatizar tarefas do IronWord no Azure usando o Azure Logic Apps ou o Azure Functions para acionar o processamento de documentos do Word com base em eventos ou agendamentos específicos.
Quais são os benefícios de usar o IronWord no Azure?
Utilizar o IronWord no Azure permite o processamento escalável e confiável de documentos do Word, aproveitando a infraestrutura de nuvem do Azure para lidar com grandes volumes de documentos, mantendo um alto desempenho.
Posso integrar o IronWord com o Armazenamento de Blobs do Azure?
Sim, você pode integrar o IronWord com o Armazenamento de Blobs do Azure para armazenar e recuperar documentos do Word, permitindo o processamento e o gerenciamento de armazenamento de documentos de forma integrada em seu ambiente Azure.
Como posso garantir que o IronWord funcione de forma eficiente no Azure?
Para garantir que o IronWord seja executado com eficiência no Azure, selecione o plano de serviço adequado à sua carga de trabalho, otimize o código do seu aplicativo e implemente o tratamento de erros e o registro de logs apropriados para a resolução de problemas.
Há algum pré-requisito para usar o IronWord no Azure?
Os pré-requisitos para usar o IronWord no Azure incluem ter um ambiente .NET configurado, uma conta do Azure com as permissões necessárias e as bibliotecas do IronWord incluídas em seu projeto.

