เผยแพร่ REST API เพื่อใส่ลายน้ำในเอกสาร Word

วิธีการเพิ่มลายน้ำในเอกสาร Word ผ่าน ASP.NET Core REST API

บทเรียนนี้จะแนะนำคุณเกี่ยวกับ วิธีการเปิดเผย REST API สำหรับการเพิ่มลายน้ำในเอกสาร Word ใน ASP.NET Core ซึ่งรวมถึงคำแนะนำทีละขั้นตอน รายละเอียดการตั้งค่า และแนวทางการปรับใช้สำหรับแพลตฟอร์มหลักๆ

ขั้นตอนการเพิ่มลายน้ำในเอกสาร Word ผ่าน REST API

  1. ตั้งค่าโปรเจกต์ ASP.NET Core Web API สำหรับการเพิ่มลายน้ำ
  2. ติดตั้ง Aspose.Words for .NET ผ่าน NuGet Package Manager
  3. สร้างตัวควบคุมพร้อม endpoint เพื่อรับไฟล์ Word และพารามิเตอร์ข้อความหรือภาพลายน้ำ
  4. เขียนโค้ดเพื่อเพิ่มลายน้ำข้อความหรือภาพในเอกสาร Word
  5. ทดสอบ API ในเครื่องโดยใช้เครื่องมืออย่าง Postman หรือ cURL
  6. ปรับใช้ API บน Windows, Linux หรือ macOS
  7. กำหนดค่า 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("กรุณาอัปโหลดเอกสาร Word ที่ถูกต้องและระบุข้อความลายน้ำ");

            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, $"ข้อผิดพลาดภายในเซิร์ฟเวอร์: {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

  1. ติดตั้ง IIS และกำหนดค่าไซต์ให้ชี้ไปที่โฟลเดอร์แอปพลิเคชันที่เผยแพร่
  2. เผยแพร่แอปพลิเคชัน:
    dotnet publish -c Release -o publish

Linux

  1. ติดตั้ง ASP.NET Core runtime:
    sudo apt-get install -y aspnetcore-runtime-7.0
  2. เผยแพร่แอปพลิเคชัน:
    dotnet publish -c Release -o publish
  3. กำหนดค่า Nginx เพื่อทำการ proxy การเข้าถึงไปยังเซิร์ฟเวอร์ Kestrel

macOS

  1. ติดตั้ง .NET runtime จาก เว็บไซต์ทางการ
  2. เผยแพร่และรัน:
    dotnet publish -c Release -o publish
    cd publish
    dotnet WatermarkAPI.dll

ปัญหาที่พบบ่อยและการแก้ไข

  1. ข้อผิดพลาดการป้อนข้อมูลไม่ถูกต้อง: ตรวจสอบให้แน่ใจว่าไฟล์ที่อัปโหลดเป็นเอกสาร Word ที่ถูกต้องและข้อความลายน้ำไม่ว่างเปล่า
  2. ข้อผิดพลาดการเข้าถึงถูกปฏิเสธ: บน Linux/macOS ให้กำหนดสิทธิ์ที่เหมาะสมกับโฟลเดอร์แอปพลิเคชัน
    chmod -R 755 /path/to/app
  3. ปัญหาด้านประสิทธิภาพ: สำหรับไฟล์ขนาดใหญ่ ให้ปรับปรุงการใช้หน่วยความจำโดยการประมวลผลไฟล์โดยตรงจากดิสก์แทนการใช้สตรีม

คู่มือนี้ได้แสดงให้คุณเห็นถึงวิธีการสร้าง REST API สำหรับการเพิ่มลายน้ำในเอกสาร Word โดยใช้ Aspose.Words for .NET และปรับใช้บนแพลตฟอร์มหลักทั้งหมด

 แบบไทย