Expose a REST API to Watermark Word Documents

Как да добавите Watermarks към Word документи чрез ASP.NET Core REST API

Този урок ви насочва към как да изложите REST API за добавяне на водни знаци към документите на Word в ASP.NET Core. Той включва стъпка по стъпки инструкции, подробности за настройки и насоки за внедряване за основните платформи.

Стъпки за добавяне на водни знаци към Word документи чрез REST API

  • ASP.NET Core Web API.
  • Install Апсос.Words за .NET via NuGet Package Manager.
  • Създайте контролер с крайна точка, за да приемете Word файлове и параметри на текст или изображение.
  • Напишете код, за да добавите текст или изображение водни знаци към документите на Word.
  • API локално с помощта на инструменти като Postman или cURL.
  • API на Windows, Linux или macOS.
  • Конфигуриране на Nginx или IIS за производствено разпространение.

Тези стъпки осигуряват подробен подход за създаване и излагане на Watermark 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("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);
            }
        }
    }
}

Използване на основни платформи

Windows

  • Инсталирайте IIS и конфигурирайте сайта, за да посочите публикуваната папка за приложения.
  • Публикувайте заявлението:
dotnet publish -c Release -o publish

Линукс

  • ASP.NET Core Runtime:
sudo apt-get install -y aspnetcore-runtime-7.0
  • Публикувайте заявлението:
dotnet publish -c Release -o publish
  • Nginx за прокси трафик към сървъра Kestrel.

Макрос

dotnet publish -c Release -o publish
cd publish
dotnet WatermarkAPI.dll

Общи проблеми и фиксиране

  • Invalid Input Errors: Уверете се, че изтегленият файл е валиден документ на Word и че текстът на водния знак не е празен.
  • Достъп отхвърлени грешки: На Linux/macOS, дайте подходящи разрешения на папката за приложения.
chmod -R 755 /path/to/app
  • ** Проблеми с изпълнението**: За големи файлове, оптимизирайте използването на паметта, като обработвате датотеките директно от диска, а не от потоците.

Този ръководство ви показва как да създадете REST API за добавяне на водни знаци към Word документи, като използвате Aspose.Words за .NET и да го разпространявате на всички основни платформи.

 Български