Expose a REST API to Watermark Word Documents

# Come Aggiungere Filigrane ai Documenti Word tramite ASP.NET Core REST API

Questo tutorial ti guida su come esponere un REST API per l’aggiunta di watermark ai documenti di Word in ASP.NET Core. Include istruzioni passo dopo passo, dettagli di impostazione e linee guida di implementazione per le principali piattaforme.

Passaggi per aggiungere Watermarks ai documenti di Word tramite REST API

  • Crea un progetto ASP.NET Core Web API per aggiungere marchi d’acqua.
  • Installazione Aspose.Words per .NET per NuGet Package Manager.
  • Creare un controller con un punto di fine per accettare i file di Word e i parametri di testo o di immagine.
  • Inserisci il codice per aggiungere testo o immagini marchi d’acqua ai documenti di Word.
  • Testare l’API localmente utilizzando strumenti come Postman o cURL.
  • Implementa l’API su Windows, Linux o macOS.
  • Configurare Nginx o IIS per la distribuzione della produzione.

Questi passaggi forniscono un approccio dettagliato alla creazione e all’esposizione dell’API watermark.

Esempio di codice: REST API per l’aggiunta di watermark

Di seguito è un taglio di codice eseguibile per esprimere un REST API che aggiunge marchi d’acqua di testo ai documenti di 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);
            }
        }
    }
}

Implementazione su piattaforme principali

Windows

  • Installare IIS e configurare il sito per indicare la cartella di applicazione pubblicata.
  • Pubblicate la domanda:
dotnet publish -c Release -o publish

di Linux

  • Installa il tempo di funzionamento ASP.NET Core:
sudo apt-get install -y aspnetcore-runtime-7.0
  • Pubblicate la domanda:
dotnet publish -c Release -o publish
  • Configurare Nginx per il traffico proxy al server Kestrel.

macOS

dotnet publish -c Release -o publish
cd publish
dotnet WatermarkAPI.dll

Problemi e fissazioni comuni

  • Invalid Input Errors: Assicurarsi che il file caricato sia un documento di Word valido e che il testo di watermark non sia vuoto.
  • Access Denied Errors: su Linux/macOS, concedi adeguate autorizzazioni alla cartella di applicazione.
chmod -R 755 /path/to/app
  • Problemi di prestazione: Per i file di grandi dimensioni, ottimizzare l’utilizzo della memoria elaborando i file direttamente dal disco piuttosto che dai flussi.

Questa guida ti ha mostrato come creare un REST API per aggiungere marchi d’acqua ai documenti di Word utilizzando Aspose.Words per .NET e implementarlo su tutte le principali piattaforme.

 Italiano