Expose a REST API to Watermark Word Documents
Cum să adăugați marcajele de apă la documentele Word prin API-ul ASP.NET Core REST
Acest tutorial vă îndrumă pe cum să expuneți o API REST pentru a adăuga semne de apă la documentele Word în ASP.NET Core. Acesta include instrucțiuni pas cu pas, detalii de setare și ghiduri de implementare pentru platformele majore.
Pasuri pentru a adăuga marcajele de apă la documentele Word prin intermediul API-ului REST
- Creați un proiect ASP.NET Core Web API pentru a adăuga semne de apă.
- Install Aspose.Words pentru .NET via NuGet Package Manager.
- Creați un controlor cu un punct final pentru a accepta fișierele Word și parametrii de text sau de imagine.
- Scrieți cod pentru a adăuga semne de apă text sau imagini la documentele Word.
- Testează API-ul local folosind instrumente precum Postman sau cURL.
- Aplicați API-ul pe Windows, Linux sau macOS.
- Configurați Nginx sau IIS pentru implementarea producției.
Aceste pași oferă o abordare detaliată pentru crearea și expunerea API-ului watermark.
Exemplu de cod: REST API pentru adăugarea marcajelor de apă
Mai jos este un scan de cod rulabil pentru expunerea unei API REST care adaugă semne de apă text în documentele 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);
}
}
}
}
Dezvoltarea pe platforme majore
Windows
- Instalați IIS și configurați site-ul pentru a indica folderul de aplicații publicate.
- Publicați cererea:
dotnet publish -c Release -o publish
Linuxul
- Instalați timpul de funcționare ASP.NET Core:
sudo apt-get install -y aspnetcore-runtime-7.0
- Publicați cererea:
dotnet publish -c Release -o publish
- Configurați Nginx pentru traficul proxy la serverul Kestrel.
macos
- Install the .NET runtime from the Site-ul oficial.
- Publicaţi şi executaţi:
dotnet publish -c Release -o publish
cd publish
dotnet WatermarkAPI.dll
Probleme și fixări comune
- Erorile de intrare invalidă: Asigurați-vă că fișierul încărcat este un document Word valabil și că textul de apă nu este gol.
- Accesul Denied Errors: Pe Linux/macOS, dați permisiunile corespunzătoare folderului de aplicații.
chmod -R 755 /path/to/app
- Probleme de performanță: Pentru fișierele mari, optimizați utilizarea memoriei prin prelucrarea fișiere direct de pe disc, în loc de fluxuri.
Acest ghid vă arată cum să creați o API REST pentru a adăuga marcajele de apă la documentele Word folosind Aspose.Words pentru .NET și să le deplasați pe toate platformele majore.