Expose uma API REST para Marcar Documentos do Word
Como Adicionar Marcas d'Água a Documentos do Word via API REST do ASP.NET Core
Este tutorial orienta você sobre como expor uma API REST para adicionar marcas d’água a documentos do Word no ASP.NET Core. Ele inclui instruções passo a passo, detalhes de configuração e diretrizes de implantação para as principais plataformas.
Etapas para Adicionar Marcas d’Água a Documentos do Word via API REST
- Configure um projeto ASP.NET Core Web API para adicionar marcas d’água.
- Instale Aspose.Words for .NET via NuGet Package Manager.
- Crie um controlador com um endpoint para aceitar arquivos do Word e parâmetros de texto ou imagem da marca d’água.
- Escreva o código para adicionar marcas d’água de texto ou imagem aos documentos do Word.
- Teste a API localmente usando ferramentas como Postman ou cURL.
- Implemente a API em ambientes Windows, Linux ou macOS.
- Configure o Nginx ou IIS para implantação em produção.
Essas etapas fornecem uma abordagem detalhada para criar e expor a API de marca d’água.
Exemplo de Código: API REST para Adicionar Marcas d’Água
Abaixo está um trecho de código executável para expor uma API REST que adiciona marcas d’água de texto aos documentos do Word:
using System.IO;
using System.Threading.Tasks;
using Aspose.Words;
using Aspose.Words.Drawing;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
namespace WatermarkAPI.Controllers
{
[ApiController]
[Route("api/[controller]")]
public class WatermarkController : ControllerBase
{
[HttpPost("add-watermark")]
public async Task<IActionResult> AddWatermark(IFormFile file, [FromQuery] string watermarkText)
{
if (file == null || file.Length == 0 || string.IsNullOrWhiteSpace(watermarkText))
return BadRequest("Por favor, envie um documento do Word válido e forneça um texto para a marca d'água.");
try
{
var tempFilePath = Path.GetTempFileName();
using (var stream = new FileStream(tempFilePath, FileMode.Create))
{
await file.CopyToAsync(stream);
}
Document doc = new Document(tempFilePath);
AddTextWatermark(doc, watermarkText);
var outputStream = new MemoryStream();
doc.Save(outputStream, SaveFormat.Docx);
outputStream.Position = 0;
return File(outputStream, "application/vnd.openxmlformats-officedocument.wordprocessingml.document", "watermarked.docx");
}
catch (System.Exception ex)
{
return StatusCode(500, $"Erro interno do servidor: {ex.Message}");
}
}
private void AddTextWatermark(Document doc, string text)
{
foreach (Section section in doc.Sections)
{
var watermark = new Shape(doc, ShapeType.TextPlainText)
{
TextPath = { Text = text, FontFamily = "Arial" },
Width = 300,
Height = 70,
Rotation = -40,
FillColor = System.Drawing.Color.LightGray,
StrokeColor = System.Drawing.Color.LightGray,
WrapType = WrapType.None,
BehindText = true,
RelativeHorizontalPosition = RelativeHorizontalPosition.Page,
RelativeVerticalPosition = RelativeVerticalPosition.Page,
Left = 100,
Top = 200
};
section.HeadersFooters[HeaderFooterType.HeaderPrimary]?.AppendChild(watermark);
}
}
}
}
Implantação em Principais Plataformas
Windows
- Instale o IIS e configure o site para apontar para a pasta da aplicação publicada.
- Publique a aplicação:
dotnet publish -c Release -o publish
Linux
- Instale o runtime do ASP.NET Core:
sudo apt-get install -y aspnetcore-runtime-7.0
- Publique a aplicação:
dotnet publish -c Release -o publish
- Configure o Nginx para fazer proxy do tráfego para o servidor Kestrel.
macOS
- Instale o runtime do .NET no site oficial.
- Publique e execute:
dotnet publish -c Release -o publish cd publish dotnet WatermarkAPI.dll
Problemas Comuns e Soluções
- Erros de Entrada Inválida: Certifique-se de que o arquivo enviado é um documento do Word válido e que o texto da marca d’água não está vazio.
- Erros de Acesso Negado: No Linux/macOS, conceda as permissões apropriadas à pasta da aplicação.
chmod -R 755 /path/to/app
- Problemas de Desempenho: Para arquivos grandes, otimize o uso de memória processando arquivos diretamente do disco em vez de streams.
Este guia mostrou como criar uma API REST para adicionar marcas d’água a documentos do Word usando Aspose.Words for .NET e implantá-la em todas as principais plataformas.