Expose a REST API to Watermark Word Documents

Com afegir marcadors d'aigua als documents de Word a través de l'API ASP.NET Core REST

Aquest tutorial et guia sobre com exposar una API REST per afegir marques d’aigua als documents de Word en ASP.NET Core. Inclou instruccions pas a pas, detalls de configuració i directrius de implementació per a les plataformes principals.

Passos per afegir marcadors d’aigua als documents de Word a través de l’API REST

  • Establir un projecte ASP.NET Core Web API per afegir marques d’aigua.
  • Install Aspose.Words per a .NET via NuGet Package Manager.
  • Crear un controlador amb un punt final per acceptar els fitxers de Word i els paràmetres de text o imatge d’aigua.
  • Escriu el codi per afegir textos o imatges en els documents de Word.
  • Testar l’API localment utilitzant eines com Postman o cURL.
  • Desplegar l’API en els entorns de Windows, Linux o macOS.
  • Configureu Nginx o IIS per a la implementació de la producci.

Aquests passos proporcionen un enfocament detallat per crear i exposar l’API de marques d’aigua**.

Exemple de codi: REST API per afegir marques d’aigua

A continuació es troba un tall de codi executable per exposar una API REST que afegeix marques d’aigua de text als documents 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);
            }
        }
    }
}

Desenvolupament a les principals plataformes

Windows

  • Instal·la IIS i configureu el lloc per fer referència a la carpeta d’aplicació publicada.
  • Publica la sol·licitud:
dotnet publish -c Release -o publish

Linux

  • Instal·la el temps de funcionament de l’ASP.NET Core:
sudo apt-get install -y aspnetcore-runtime-7.0
  • Publica la sol·licitud:
dotnet publish -c Release -o publish
  • Configureu Nginx al trànsit de proxy al servidor Kestrel.

macos

  • Install the .NET runtime from the Lloc oficial.
  • Publicar i executar:
dotnet publish -c Release -o publish
cd publish
dotnet WatermarkAPI.dll

Problemes comuns i fixos

  • Errors d’entrada invalidades: Assegureu-vos que el fitxer carregat és un document de Word vàlid i el text de l’aigua no és buit.
  • Access Denied Errors: En Linux/macOS, concedeix permissions adequades a la carpeta d’aplicaci.
chmod -R 755 /path/to/app
  • Problemes de rendiment: Per a arxius grans, optimitzar l’ús de la memòria mitjançant el processament de fitxers directament des del disc en lloc de fluxos.

Aquest guia t’ha mostrat com crear una API REST per afegir marques d’aigua als documents de Word utilitzant Aspose.Words per .NET i implementar-la en totes les plataformes principals.

 Català