Expose a REST API to Watermark Word Documents

Hoe watermerken toe te voegen aan Word-documenten via ASP.NET Core REST API

Deze tutorial begeleidt je bij hoe een REST API blootstellen voor het toevoegen van watermerken aan Word-documenten in ASP.NET Core. Het bevat stapsgewijze instructies, installatie‑details en implementatierichtlijnen voor belangrijke platforms.

Stappen om watermerken toe te voegen aan Word‑documenten via REST API

  1. Stel een ASP.NET Core Web API‑project in voor het toevoegen van watermerken.
  2. Installeren Aspose.Words for .NET via NuGet Package Manager.
  3. Maak een controller met een endpoint om Word‑bestanden en watermerk‑tekst‑ of afbeelding‑parameters te accepteren.
  4. Schrijf code om tekst‑ of afbeelding‑watermerken toe te voegen aan Word‑documenten.
  5. Test de API lokaal met tools zoals Postman of cURL.
  6. Implementeer de API op Windows-, Linux- of macOS-omgevingen.
  7. Configureer Nginx of IIS voor productie‑implementatie.

Deze stappen bieden een gedetailleerde aanpak om de watermerk‑API.

Codevoorbeeld: REST‑API voor het toevoegen van watermerken

Hieronder staat een uitvoerbare code‑snippet voor het blootstellen van een REST‑API die tekstwatermerken toevoegt aan Word‑documenten:

using System.IO;
using System.Threading.Tasks;
using Aspose.Words;
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);

                TextWatermarkOptions options = new TextWatermarkOptions
                {
                    FontFamily = "Arial",
                    FontSize = 40,
                    Color = System.Drawing.Color.LightGray,
                    Layout = WatermarkLayout.Diagonal,
                    IsSemitrasparent = true
                };
                doc.Watermark.SetText(watermarkText, options);

                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}");
            }
        }
    }
}

Implementatie op belangrijke platforms

Windows

  1. Installeer IIS en configureer de site zodat deze naar de gepubliceerde toepassingsmap wijst.
  2. Publiceer de applicatie:

Linux

  1. Installeer de ASP.NET Core runtime:
  2. Publiceer de applicatie:
  3. Configureer Nginx om verkeer naar de Kestrel server te proxyën.

macOS

  1. Installeer de .NET runtime van de officiële site .
  2. Publiceer en voer uit:

Algemene problemen en oplossingen

  1. Ongeldige invoerfouten: Zorg ervoor dat het geüploade bestand een geldig Word‑document is en dat de watermerktekst niet leeg is.
  2. Toegang geweigerd fouten: Verleen op Linux/macOS de juiste machtigingen aan de toepassingsmap.
  3. Prestatieproblemen: Voor grote bestanden, optimaliseer het geheugenverbruik door bestanden direct van de schijf te verwerken in plaats van via streams.

Deze gids heeft je laten zien hoe je een REST API maakt voor het toevoegen van watermerken aan Word-documenten met behulp van Aspose.Words for .NET en implementeer deze op alle belangrijke platforms.

 Nederlands