Expose a REST API to Watermark Word Documents
Cómo agregar marcadores de agua a los documentos de Word a través de la API ASP.NET Core REST
Este tutorial le guía sobre cómo exponer una API REST para agregar marcadores de agua a los documentos de Word en ASP.NET Core. Incluye instrucciones paso a paso, detalles de configuración y directrices de implementación para las principales plataformas.
Pasos para agregar marcadores de agua a los documentos de Word a través de la API REST
- Crea un proyecto de API web de ASP.NET Core para agregar marcadores de agua.
- Instalar Aspose.Words para .NET Con el NuGet Package Manager.
- Crea un controlador con un punto final para aceptar los archivos de Word y los parámetros de texto o imagen.
- Escribe el código para agregar texto o imágenes a los documentos de Word.
- Testar la API localmente utilizando herramientas como Postman o cURL.
- Despliegue la API en ambientes de Windows, Linux o macOS.
- Configure Nginx o IIS para el despliegue de producción.
Estos pasos proporcionan un enfoque detallado para crear y exponer la API marca de agua.
Ejemplo de código: REST API para agregar marcadores de agua
A continuación se encuentra un snippet de código corriente para exponer una API REST que añade las etiquetas de texto a los documentos de 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("Please upload a valid Word document and provide a watermark text.");
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, $"Internal server error: {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);
}
}
}
}
Desarrollo en las principales plataformas
Windows
- Instalar IIS y configurar el sitio para señalar la pasta de aplicación publicada.
- Publica la solicitud:
dotnet publish -c Release -o publish
Linux
- Instalar el tiempo de funcionamiento de ASP.NET Core:
sudo apt-get install -y aspnetcore-runtime-7.0
- Publica la solicitud:
dotnet publish -c Release -o publish
- Configure Nginx para el tráfico de proxy al servidor de Kestrel.
MacOS
- Instalar el .NET Runtime desde el Sitio oficial .
- Publicar y correr:
dotnet publish -c Release -o publish
cd publish
dotnet WatermarkAPI.dll
Problemas y soluciones comunes
- Errores de entrada invalidas: Asegúrese de que el archivo cargado es un documento de Word válido y el texto de la marca de agua no es vacío.
- Access Denied Errors: En Linux/macOS, otorgue las autorizaciones adecuadas a la carpeta de la aplicación.
chmod -R 755 /path/to/app
- Problemas de rendimiento: Para los archivos grandes, optimiza el uso de la memoria procesando los archivos directamente desde el disco en lugar de los flujos.
Este guía le ha mostrado cómo crear una API REST para agregar las marcas de agua a los documentos de Word utilizando Aspose.Words para .NET y implementarla en todas las plataformas principales.