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.