Відкриття 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 for .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 for .NET та розгорнути його на всіх основних платформах.