Expose a REST API to Watermark Word Documents

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

此教程引导您如何在 ASP.NET Core 中的 Word 文档中添加水标的 REST API 如何曝光,包括步骤指示、设置详细信息以及主要平台的部署指南。

通过 REST API 将水标添加到 Word 文档

  • 创建一个 ASP.NET Core Web API 项目,以添加水标。
  • 安装 ASPOSE.Words 为 .NET 通过 NuGet Package Manager。
  • 创建一个具有终点的控制器,以接受Word文件和水标文本或图像参数。
  • 编写代码以添加文本或图像水标到Word文档。
  • 使用 Postman 或 cURL 等工具本地测试 API。
  • 在 Windows、Linux 或 macOS 环境中部署 API。
  • 设置 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("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);
            }
        }
    }
}

在主要平台上部署

窗口

  • 安装 IIS 并设置网站以指向发布的应用程序文件夹。
  • 发表申请:
dotnet publish -c Release -o publish

林肯

  • 安装 ASP.NET Core 运行时间:
sudo apt-get install -y aspnetcore-runtime-7.0
  • 发表申请:
dotnet publish -c Release -o publish
  • 将 Nginx 设置为 Proxy 流量到 Kestrel 服务器。

马克思

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 并将其部署在所有主要平台上。

 中文