Exponera en REST API för att vattenmärka Word-dokument
Hur man lägger till vattenstämplar i Word-dokument via ASP.NET Core REST API
Detta handledning vägleder dig om hur man exponerar en REST API för att lägga till vattenstämplar i Word-dokument i ASP.NET Core. Den innehåller steg-för-steg-instruktioner, installationsdetaljer och distributionsriktlinjer för stora plattformar.
Steg för att lägga till vattenstämplar i Word-dokument via REST API
- Ställ in ett ASP.NET Core Web API-projekt för att lägga till vattenstämplar.
- Installera Aspose.Words för .NET via NuGet Package Manager.
- Skapa en controller med en slutpunkt för att ta emot Word-filer och vattenstämpeltext eller bildparametrar.
- Skriv kod för att lägga till text- eller bildvattenstämplar i Word-dokument.
- Testa API:et lokalt med verktyg som Postman eller cURL.
- Distribuera API:et på Windows, Linux eller macOS-miljöer.
- Konfigurera Nginx eller IIS för produktionsdistribution.
Dessa steg ger en detaljerad metod för att skapa och exponera vattenstämpel-API.
Kodexempel: REST API för att lägga till vattenstämplar
Nedan finns en körbar kodsnutt för att exponera en REST API som lägger till textvattenstämplar i Word-dokument:
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("Vänligen ladda upp ett giltigt Word-dokument och ange en vattenstämpeltext.");
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, $"Internt serverfel: {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);
}
}
}
}
Distribution på stora plattformar
Windows
- Installera IIS och konfigurera webbplatsen för att peka på den publicerade applikationsmappen.
- Publicera applikationen:
dotnet publish -c Release -o publish
Linux
- Installera ASP.NET Core-runtime:
sudo apt-get install -y aspnetcore-runtime-7.0
- Publicera applikationen:
dotnet publish -c Release -o publish
- Konfigurera Nginx för att proxytrafik till Kestrel-servern.
macOS
- Installera .NET-runtime från den officiella sidan.
- Publicera och kör:
dotnet publish -c Release -o publish cd publish dotnet WatermarkAPI.dll
Vanliga problem och lösningar
- Ogiltiga inmatningsfel: Se till att den uppladdade filen är ett giltigt Word-dokument och att vattenstämpeltexten inte är tom.
- Åtkomst nekad-fel: På Linux/macOS, ge lämpliga behörigheter till applikationsmappen.
chmod -R 755 /path/to/app
- Prestandaproblem: För stora filer, optimera minnesanvändningen genom att bearbeta filer direkt från disk istället för strömmar.
Denna guide har visat hur man skapar en REST API för att lägga till vattenstämplar i Word-dokument med Aspose.Words för .NET och distribuera den på alla stora plattformar.