Expose a REST API to Watermark Word Documents
Bagaimana untuk menambah Watermarks kepada dokumen Word melalui API ASP.NET Core REST
Tutorial ini membimbing anda tentang bagaimana untuk mendedahkan API REST untuk menambah tanda air kepada dokumen Word dalam ASP.NET Core . Ia termasuk arahan langkah demi langkah, butiran tetapan, dan garis panduan pelaksanaan untuk platform utama.
Langkah-langkah untuk menambah Watermarks kepada dokumen Word melalui REST API
- Menubuhkan projek ASP.NET Core Web API untuk menambah watermark.
- Install Tag: kata-kata untuk .NET melalui NuGet Package Manager.
- Mencipta kawalan dengan titik akhir untuk menerima fail Word dan parameter teks atau imej watermark.
- Tulis kod untuk menambah teks atau imej watermark kepada dokumen Word.
- Ujian API secara tempatan menggunakan alat seperti Postman atau cURL.
- Meletakkan API pada persekitaran Windows, Linux, atau macOS.
- Mengesetkan Nginx atau IIS untuk pelaksanaan pengeluaran.
Langkah-langkah ini menyediakan pendekatan terperinci untuk mewujudkan dan mendedahkan API ** watermark** .
Contoh Kod: REST API untuk Menambah Watermarks
Di bawah ini adalah skrip kod yang boleh dilancarkan untuk mendedahkan API REST yang menambah tanda-tanda teks kepada dokumen 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);
}
}
}
}
Pengenalan kepada platform utama
Windows
- Memasang IIS dan mengkonfigurasi laman untuk menunjuk kepada folder aplikasi yang diterbitkan.
- Menerbitkan Permohonan :
dotnet publish -c Release -o publish
Linux
- Pemasangan masa kerja ASP.NET Core :
sudo apt-get install -y aspnetcore-runtime-7.0
- Menerbitkan Permohonan :
dotnet publish -c Release -o publish
- Mengesetkan Nginx kepada trafik proxy ke pelayan Kestrel.
Makkah
- Menginstal .NET runtime daripada Laman web rasmi .
- Menerbitkan dan menjalankan :
dotnet publish -c Release -o publish
cd publish
dotnet WatermarkAPI.dll
Masalah dan penyelesaian umum
- Kesilapan input yang tidak sah : Pastikan fail yang dimuat naik adalah dokumen Word yang sah dan teks watermark tidak kosong.
- Access Denied Errors : Pada Linux/macOS, berikan kebenaran yang betul kepada folder aplikasi.
chmod -R 755 /path/to/app
- Masalah prestasi : Untuk fail besar, mengoptimumkan penggunaan memori dengan memproses fail secara langsung daripada cakera daripada aliran.
Panduan ini telah menunjukkan kepada anda bagaimana untuk mencipta API REST untuk menambah watermark kepada dokumen Word menggunakan Aspose.Words untuk .NET dan menggunakannya di semua platform utama.