Expose a REST API to Watermark Word Documents
# Jak dodać znaki wodne do dokumentów Word za pomocą ASP.NET Core REST API
Ten tutorial wskazuje Cię na temat jak eksponować API REST do dodania znaków wodnych do dokumentów Word w ASP.NET Core. zawiera instrukcje krok po kroku, szczegóły ustawienia i wytyczne wdrażania dla głównych platform.
Krok do dodania znaków wodnych do dokumentów Word za pośrednictwem REST API
- Zainstaluj projekt ASP.NET Core Web API do dodania znaków wodnych.
- Instalacja Aspose.Words dla .NET w ramach programu NuGet Package Manager.
- Tworzenie sterownika z punktem końcowym, aby zaakceptować pliki Word i parametry tekstu lub obrazu.
- Wpisz kod, aby dodać znak wody tekstu lub obrazu do dokumentów programu Word.
- Testuj API lokalnie za pomocą narzędzi takich jak Postman lub cURL.
- Rozmieszcz API w środowiskach Windows, Linux lub macOS.
- Konfiguruj Nginx lub IIS do rozmieszczenia produkcji.
Te kroki dostarczają szczegółowego podejścia do tworzenia i ekspozycji Watermark API.
Przykład kodu: REST API do dodania znaków wodnych
Poniżej znajduje się wyświetlacz kodowy do ekspozycji API REST, który dodaje znaków tekstowych do dokumentów programu 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);
}
}
}
}
Wdrażanie na głównych platformach
Windows
- Instaluj IIS i skonfiguruj witrynę, aby odnieść się do opublikowanego folderu aplikacji.
- Opublikuj wniosek:
dotnet publish -c Release -o publish
Linux
- Instalacja czasu pracy ASP.NET Core:
sudo apt-get install -y aspnetcore-runtime-7.0
- Opublikuj wniosek:
dotnet publish -c Release -o publish
- Konfiguruj Nginx do ruchu proxy na serwerze Kestrel.
MacOS
- Instalacja czasu pracy .NET z Oficjalna strona .
- Publikacja i uruchomienie:
dotnet publish -c Release -o publish
cd publish
dotnet WatermarkAPI.dll
Wspólne problemy i korekty
- Nieprawidłowe błędy w wejściu: Upewnij się, że przesyłany plik jest ważnym dokumentem Word, a tekst znaku wodnego jest nieprawidłowy.
- Access Denied Errors: W systemie Linux/macOS udzielaj odpowiednich zezwoleń folderowi aplikacji.
chmod -R 755 /path/to/app
- Problemy wydajności: Dla dużych plików optymalizuj wykorzystanie pamięci poprzez przetwarzanie plików bezpośrednio z dysku zamiast strumieni.
Ten przewodnik pokazuje, jak utworzyć REST API do dodania znaków wodnych do dokumentów Word za pomocą Aspose.Words dla .NET i rozmieszczać je na wszystkich głównych platformach.