Expose a REST API to Watermark Word Documents
Làm thế nào để thêm Watermarks vào các tài liệu Word thông qua ASP.NET Core REST API
Hướng dẫn này hướng dẫn bạn về làm thế nào để tiếp xúc với một API REST để thêm dấu nước vào tài liệu Word trong ASP.NET Core. Nó bao gồm hướng dẫn từng bước, chi tiết cài đặt, và hướng dẫn triển khai cho các nền tảng chính.
Bước để Thêm Watermarks vào Tài liệu Word thông qua REST API
- Thiết lập một dự án ASP.NET Core Web API để thêm các dấu hiệu nước.
- cài đặt Aspose.Words cho .NET Thông qua NuGet Package Manager.
- Tạo một bộ điều khiển với một điểm kết thúc để chấp nhận các tệp Word và các thông số văn bản hoặc hình ảnh watermark.
- Viết mã để thêm văn bản hoặc hình ảnh watermark vào tài liệu Word.
- Kiểm tra API địa phương bằng các công cụ như Postman hoặc cURL.
- Phát triển API trên Windows, Linux, hoặc môi trường macOS.
- Thiết lập Nginx hoặc IIS cho việc triển khai sản xuất.
Những bước này cung cấp một cách tiếp cận chi tiết để tạo và tiết lộ API watermark.
Ví dụ mã: REST API để Thêm Watermarks
Dưới đây là một đoạn mã chạy để tiết lộ một REST API mà thêm các dấu hiệu nước văn bản vào tài liệu 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);
}
}
}
}
Phát triển trên các nền tảng lớn
Windows
- Cài đặt IIS và thiết lập trang web để đề cập đến thư mục ứng dụng được công bố.
- Phát hành ứng dụng:
dotnet publish -c Release -o publish
Linux
- Cài đặt ASP.NET Core runtime:
sudo apt-get install -y aspnetcore-runtime-7.0
- Phát hành ứng dụng:
dotnet publish -c Release -o publish
- Thiết lập Nginx để lưu lượng truy cập proxy đến máy chủ Kestrel.
macOS
- Cài đặt .NET runtime từ Trang web chính thức .
- Phát hành và chạy:
dotnet publish -c Release -o publish
cd publish
dotnet WatermarkAPI.dll
Các vấn đề chung và Fixes
- Lỗi nhập không hợp lệ: Hãy chắc chắn rằng tệp được tải lên là một tài liệu Word hợp lệ và văn bản watermark không trống rỗng.
- Access Denied Errors: Trên Linux/macOS, cho phép thích hợp cho thư mục ứng dụng.
chmod -R 755 /path/to/app
- Các vấn đề hiệu suất: Đối với các tệp lớn, tối ưu hóa sử dụng bộ nhớ bằng cách xử lý các tệp trực tiếp từ đĩa thay vì dòng.
Hướng dẫn này đã cho bạn biết làm thế nào để tạo một API REST để thêm điểm nước vào tài liệu Word bằng cách sử dụng Aspose.Words cho .NET và triển khai nó trên tất cả các nền tảng chính.