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

  1. Configure um projeto ASP.NET Core Web API para adicionar marcas d’água.
  2. Instale Aspose.Words for .NET via NuGet Package Manager.
  3. Crie um controlador com um endpoint para aceitar arquivos do Word e parâmetros de texto ou imagem da marca d’água.
  4. Escreva o código para adicionar marcas d’água de texto ou imagem aos documentos do Word.
  5. Teste a API localmente usando ferramentas como Postman ou cURL.
  6. Implemente a API em ambientes Windows, Linux ou macOS.
  7. 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

  1. Instale o IIS e configure o site para apontar para a pasta da aplicação publicada.
  2. Publique a aplicação:
    dotnet publish -c Release -o publish

Linux

  1. Instale o runtime do ASP.NET Core:
    sudo apt-get install -y aspnetcore-runtime-7.0
  2. Publique a aplicação:
    dotnet publish -c Release -o publish
  3. Configure o Nginx para fazer proxy do tráfego para o servidor Kestrel.

macOS

  1. Instale o runtime do .NET no site oficial.
  2. Publique e execute:
    dotnet publish -c Release -o publish
    cd publish
    dotnet WatermarkAPI.dll

Problemas Comuns e Soluções

  1. 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.
  2. Erros de Acesso Negado: No Linux/macOS, conceda as permissões apropriadas à pasta da aplicação.
    chmod -R 755 /path/to/app
  3. 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.

 Português