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
IronWord tem melhor desempenho em planos de serviço Azure que fornecem disponibilidade computacional consistente. Para a maioria dos casos de uso pequenos a médios, o Plano de Serviço de Aplicativos Básico (B1) é suficiente. Se sua aplicação processa um alto volume de documentos Word ou realiza tarefas de formatação complexas, considere fazer upgrade para os níveis Standard (S1) ou superiores para evitar 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, Azure Functions 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.

