Expose a REST API to Watermark Word Documents

如何通过 ASP.NET Core REST API 为 Word 文档添加水印

本教程指导您如何 如何在 ASP.NET Core 中公开用于为 Word 文档添加水印的 REST API. 它包括逐步说明、设置细节以及主要平台的部署指南。.

通过 REST API 为 Word 文档添加水印的步骤

  1. 设置一个用于添加水印的 ASP.NET Core Web API 项目。.
  2. 安装 Aspose.Words for .NET 通过 NuGet 包管理器。.
  3. 创建一个控制器,并在其中设置一个端点以接受 Word 文件以及水印文本或图像参数。.
  4. 编写代码向 Word 文档添加文本或图像水印。.
  5. 使用 Postman 或 cURL 等工具在本地测试 API。.
  6. 在 Windows、Linux 或 macOS 环境中部署 API。.
  7. 为生产部署配置 Nginx 或 IIS。.

这些步骤提供了创建并公开的详细方法 水印 API.

代码示例:用于添加水印的 REST API

以下是一个可运行的代码片段,用于公开一个向 Word 文档添加文本水印的 REST API::

using System.IO;
using System.Threading.Tasks;
using Aspose.Words;
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);

                TextWatermarkOptions options = new TextWatermarkOptions
                {
                    FontFamily = "Arial",
                    FontSize = 40,
                    Color = System.Drawing.Color.LightGray,
                    Layout = WatermarkLayout.Diagonal,
                    IsSemitrasparent = true
                };
                doc.Watermark.SetText(watermarkText, options);

                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}");
            }
        }
    }
}

在主要平台上的部署

Windows

  1. 安装 IIS 并将站点配置为指向已发布的应用程序文件夹。.
  2. 发布应用程序::

Linux

  1. 安装 ASP.NET Core 运行时::
  2. 发布应用程序::
  3. 配置 Nginx 将流量代理到 Kestrel 服务器。.

macOS

  1. 从官方站点安装 .NET 运行时 官方网站 .
  2. 发布并运行::

常见问题及解决方案

  1. 无效输入错误: 确保上传的文件是有效的 Word 文档,且水印文本非空。.
  2. 访问被拒绝错误: 在 Linux/macOS 上,为应用程序文件夹授予适当的权限。.
  3. 性能问题: 对于大文件,优化内存使用,通过直接从磁盘处理文件而不是流式处理。.

本指南向您展示了如何创建一个用于向 Word 文档添加水印的 REST API,使用 Aspose.Words for .NET 并将其部署到所有主要平台。.

 中文