Expose a REST API to Watermark Word Documents

Hur man lägger till vattenmärken till Word-dokument via ASP.NET Core REST API

Denna tutorial guider dig om hur man exponerar en REST API för att lägga till vattenmärken till Word-dokument i ASP.NET Core. Det innehåller steg för steg instruktioner, inställningsdetaljer och implementeringsguider för stora plattformar.

Steg för att lägga till vattenmärken i Word-dokument via REST API

  • Ställ in ett ASP.NET Core Web API-projekt för att lägga till vattenmärken.
  • Installera Aspose.Words för .NET via NuGet Package Manager.
  • Skapa en kontroll med en slutpunkt för att acceptera Word-filer och vattenmärkta text- eller bildparametrar.
  • Skriv kod för att lägga till text eller bild vattenmärken i Word-dokument.
  • Testa API lokalt med hjälp av verktyg som Postman eller cURL.
  • Installera API på Windows, Linux eller macOS-miljöer.
  • Konfigurera Nginx eller IIS för produktionsanläggning.

Dessa steg ger ett detaljerat tillvägagångssätt för att skapa och exponera watermark API.

Kod Exempel: REST API för att lägga till vattenmärken

Nedan är en löpbar kodskiva för att exponera en REST API som lägger till textvattenmärken till 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("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);
            }
        }
    }
}

Utnyttjande på större plattformar

Windows

  • Installera IIS och konfigurera webbplatsen för att hänvisa till den publicerade applikatorn.
  • Publicera ansökan:
dotnet publish -c Release -o publish

Linux

  • Installera ASP.NET Core runtime:
sudo apt-get install -y aspnetcore-runtime-7.0
  • Publicera ansökan:
dotnet publish -c Release -o publish
  • Konfigurera Nginx till proxy-trafik till Kestrel-servern.

macos

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

Vanliga problem och fixar

  • Invalid Input Errors: Se till att den uppladdade filen är ett giltigt Word-dokument och vattendeckningen är ofullständig.
  • Access Denied Errors: På Linux/macOS, ge lämpliga tillstånd till applikatorn.
chmod -R 755 /path/to/app
  • Performance Issues: För stora filer optimerar du minnesanvändningen genom att bearbeta filer direkt från skivan istället för strömmar.

Denna guide har visat dig hur du skapar en REST API för att lägga till vattenmärken i Word-dokument med Aspose.Words för .NET och distribuera den på alla större plattformar.

 Svenska