Expose a REST API to Watermark Word Documents
Hoe Watermarks toe te voegen aan Word-documenten via ASP.NET Core REST API
Deze tutorial leert u over hoe u een REST API blootstellen voor het toevoegen van watermarken aan Word-documenten in ASP.NET Core. Het omvat stap voor stap instructies, instellingsgegevens en implementatierichtlijnen voor grote platforms.
Stappen om Watermarks toe te voegen aan Word-documenten via de REST API
- Installeer een ASP.NET Core Web API-project voor het toevoegen van watermarkten.
- Install Aspose.Words voor .NET via NuGet Package Manager.
- Creëer een controller met een eindpunt om Word-bestanden en watermark-tekst of beeldparameters te accepteren.
- Schrijf code om tekst of afbeelding watermark toe te voegen aan Word-documenten.
- Test de API lokaal met behulp van tools zoals Postman of cURL.
- Verplaats de API op Windows, Linux of macOS-omgevingen.
- Configureer Nginx of IIS voor productielocatie.
Deze stappen bieden een gedetailleerde benadering voor het creëren en blootstellen van de watermark API.
Code Voorbeeld: REST API voor het toevoegen van watermarken
Hieronder is een draagbare code snippet voor het blootstellen van een REST API die tekstwatermarken toevoegt aan Word-documenten:
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);
}
}
}
}
Beperkingen op grote platforms
Windows
- Installeer IIS en installeer de site om naar de gepubliceerde applicatie map te verwijzen.
- Publiceren van de aanvraag:
dotnet publish -c Release -o publish
Linux
- Installeer de ASP.NET Core runtime:
sudo apt-get install -y aspnetcore-runtime-7.0
- Publiceren van de aanvraag:
dotnet publish -c Release -o publish
- Configureer Nginx naar proxyverkeer naar de Kestrel-server.
macos
- Install the .NET runtime from the Officiële site.
- Publiceren en uitvoeren:
dotnet publish -c Release -o publish
cd publish
dotnet WatermarkAPI.dll
Gemeenschappelijke problemen en fixes
- Invalid Input Errors: Zorg ervoor dat het geüpload bestand een geldig Word-document is en dat de watermarktekst niet leeg is.
- Access Denied Errors: Op Linux/macOS, geef de juiste toestemmingen aan de applicatie map.
chmod -R 755 /path/to/app
- Performance Issues: Voor grote bestanden, optimaliseren wij het geheugengebruik door bestand rechtstreeks uit de schijf te verwerken in plaats van streams.
Deze gids heeft u aangetoond hoe u een REST API kunt maken om watermerken toe te voegen aan Word-documenten met behulp van Aspose.Words voor .NET en het op alle belangrijke platforms te implementeren.