Expose a REST API для добавления водяных знаков в документы Word
Как добавить водяные знаки в документы Word с помощью REST API ASP.NET Core
Этот учебник направляет вас на то, как создать REST API для добавления водяных знаков в документы Word в ASP.NET Core. Он включает пошаговые инструкции, детали настройки и рекомендации по развертыванию для основных платформ.
Шаги для добавления водяных знаков в документы Word через REST API
- Настройте проект ASP.NET Core Web API для добавления водяных знаков.
- Установите Aspose.Words для .NET через диспетчер пакетов NuGet.
- Создайте контроллер с конечной точкой для приема файлов Word и параметров текста или изображения водяного знака.
- Напишите код для добавления текстовых или изображенческих водяных знаков в документы Word.
- Протестируйте API локально с помощью таких инструментов, как Postman или cURL.
- Разверните API в средах Windows, Linux или macOS.
- Настройте Nginx или IIS для развертывания в производственной среде.
Эти шаги предоставляют подробный подход к созданию и открытию API водяного знака.
Пример кода: REST API для добавления водяных знаков
Ниже приведен исполняемый фрагмент кода для открытия REST API, который добавляет текстовые водяные знаки в документы 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("Пожалуйста, загрузите действительный документ Word и укажите текст водяного знака.");
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, $"Внутренняя ошибка сервера: {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);
}
}
}
}
Развертывание на основных платформах
Windows
- Установите IIS и настройте сайт, чтобы он указывал на папку с опубликованным приложением.
- Опубликуйте приложение:
dotnet publish -c Release -o publish
Linux
- Установите среду выполнения ASP.NET Core:
sudo apt-get install -y aspnetcore-runtime-7.0
- Опубликуйте приложение:
dotnet publish -c Release -o publish
- Настройте Nginx для проксирования трафика на сервер Kestrel.
macOS
- Установите среду выполнения .NET с официального сайта.
- Опубликуйте и запустите:
dotnet publish -c Release -o publish cd publish dotnet WatermarkAPI.dll
Общие проблемы и их решения
- Ошибки недопустимого ввода: Убедитесь, что загруженный файл является действительным документом Word, а текст водяного знака не пустой.
- Ошибки доступа: На Linux/macOS предоставьте необходимые права на папку приложения.
chmod -R 755 /path/to/app
- Проблемы с производительностью: Для больших файлов оптимизируйте использование памяти, обрабатывая файлы напрямую с диска, а не из потоков.
Этот гид показал вам, как создать REST API для добавления водяных знаков в документы Word с использованием Aspose.Words для .NET и развернуть его на всех основных платформах.