Expose a REST API to Watermark Word Documents
Kaip pridėti vandens ženklus į "Word" dokumentus per ASP.NET Core REST API
Šis mokymo kursas veda jus į kaip atskleisti REST API, kad pridėtumėte vandens ženklus į “Word” dokumentus ASP.NET Core . Tai apima žingsnio po žvilgsnio instrukcijas, nustatymų duomenis ir pagrindinių platformų paleidimo gaires.
Žingsniai, kaip pridėti vandens ženklus į “Word” dokumentus per “REST API”
- Sukurkite ASP.NET Core Web API projektą, kad pridėtumėte vandens ženklus.
- Install Žodžiai ir žodžiai .NET NuGet paketų vadybininkas.
- Sukurkite kontrolierių su galutiniu tašku, kad priimtumėte “Word” failus ir vandens ženklo tekstą ar vaizdo parametrus.
- Parašykite kodą, kad tekstą ar vaizdą pridėtumėte Word dokumentams.
- Išbandykite API vietiniu būdu, naudodami tokius įrankius kaip „Postman“ arba „cURL“.
- Įdiegti API „Windows“, „Linux“ arba „macOS“ aplinkose.
- Nustatykite Nginx arba IIS gamybos įdiegimui.
Šie žingsniai suteikia išsamią požiūrį į tai, kaip sukurti ir atskleisti ** vandens ženklo API** .
Kodo pavyzdys: REST API vandens ženklų pridėjimui
Žemiau pateikiamas paleidimo kodas, skirtas REST API, kuris prideda teksto vandens ženklus Word dokumentams:
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);
}
}
}
}
Įdiegimas pagrindinėse platformose
Windows
- Įdiegti IIS ir konfigūruoti svetainę nurodyti paskelbtoje paraiškos aplanką.
- Paskelbti paraišką:
dotnet publish -c Release -o publish
Linux
- Įdiegti ASP.NET Core paleidimo laiką:
sudo apt-get install -y aspnetcore-runtime-7.0
- Paskelbti paraišką:
dotnet publish -c Release -o publish
- Nustatykite Nginx proxy srautą į Kestrel serverį.
Mėlyna
- Įdiegti .NET paleidimo laiką iš Oficiali svetainė .
- Paskelbti ir paleisti:
dotnet publish -c Release -o publish
cd publish
dotnet WatermarkAPI.dll
Bendros problemos ir fiksacijos
- Invalid Input Errors : Įsitikinkite, kad įkeltas failas yra galiojantis Word dokumentas ir vandens ženklo tekstas nėra tuščias.
- ** Prieigos atmestas klaidas** : Linux / macOS, suteikti tinkamas leidimus programos aplanką.
chmod -R 755 /path/to/app
- Performance Problems : Dideliems failams optimizuokite atminties naudojimą tvarkant failus tiesiai iš disko, o ne srautus.
Šis vadovas parodė jums, kaip sukurti REST API, kad Word dokumentams būtų pridėti vandens ženklai naudojant Aspose.Words .NET ir išplėsti jį visose pagrindinėse platformos.