Esporre un'API REST per il watermarking dei documenti Word
Come Aggiungere Filigrane ai Documenti Word tramite ASP.NET Core REST API
Questo tutorial ti guida su come esporre un’API REST per aggiungere filigrane ai documenti Word in ASP.NET Core. Include istruzioni passo passo, dettagli di configurazione e linee guida per il deployment su principali piattaforme.
Passi per Aggiungere Filigrane ai Documenti Word tramite API REST
- Configura un progetto ASP.NET Core Web API per aggiungere filigrane.
- Installa Aspose.Words per .NET tramite NuGet Package Manager.
- Crea un controller con un endpoint per accettare file Word e parametri di testo o immagine per la filigrana.
- Scrivi codice per aggiungere filigrane di testo o immagine ai documenti Word.
- Testa l’API localmente utilizzando strumenti come Postman o cURL.
- Distribuisci l’API su ambienti Windows, Linux o macOS.
- Configura Nginx o IIS per il deployment in produzione.
Questi passaggi forniscono un approccio dettagliato per creare ed esporre l’API delle filigrane.
Esempio di Codice: API REST per Aggiungere Filigrane
Di seguito è riportato un frammento di codice eseguibile per esporre un’API REST che aggiunge filigrane di testo ai documenti 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("Si prega di caricare un documento Word valido e fornire un testo per la filigrana.");
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, $"Errore interno del server: {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);
}
}
}
}
Deployment su Principali Piattaforme
Windows
- Installa IIS e configura il sito per puntare alla cartella dell’applicazione pubblicata.
- Pubblica l’applicazione:
dotnet publish -c Release -o publish
Linux
- Installa il runtime ASP.NET Core:
sudo apt-get install -y aspnetcore-runtime-7.0
- Pubblica l’applicazione:
dotnet publish -c Release -o publish
- Configura Nginx per fare proxy al server Kestrel.
macOS
- Installa il runtime .NET dal sito ufficiale.
- Pubblica e avvia:
dotnet publish -c Release -o publish cd publish dotnet WatermarkAPI.dll
Problemi Comuni e Soluzioni
- Errori di Input Non Valido: Assicurati che il file caricato sia un documento Word valido e che il testo della filigrana non sia vuoto.
- Errori di Accesso Negato: Su Linux/macOS, concedi le giuste autorizzazioni alla cartella dell’applicazione.
chmod -R 755 /path/to/app
- Problemi di Prestazioni: Per file di grandi dimensioni, ottimizza l’uso della memoria elaborando i file direttamente dal disco piuttosto che dai flussi.
Questa guida ti ha mostrato come creare un’API REST per aggiungere filigrane ai documenti Word utilizzando Aspose.Words per .NET e distribuirla su tutte le principali piattaforme.