เผยแพร่ REST API เพื่อใส่ลายน้ำในเอกสาร Word
วิธีการเพิ่มลายน้ำในเอกสาร Word ผ่าน ASP.NET Core REST API
บทเรียนนี้จะแนะนำคุณเกี่ยวกับ วิธีการเปิดเผย REST API สำหรับการเพิ่มลายน้ำในเอกสาร Word ใน ASP.NET Core ซึ่งรวมถึงคำแนะนำทีละขั้นตอน รายละเอียดการตั้งค่า และแนวทางการปรับใช้สำหรับแพลตฟอร์มหลักๆ
ขั้นตอนการเพิ่มลายน้ำในเอกสาร Word ผ่าน REST API
- ตั้งค่าโปรเจกต์ ASP.NET Core Web API สำหรับการเพิ่มลายน้ำ
- ติดตั้ง Aspose.Words for .NET ผ่าน NuGet Package Manager
- สร้างตัวควบคุมพร้อม endpoint เพื่อรับไฟล์ Word และพารามิเตอร์ข้อความหรือภาพลายน้ำ
- เขียนโค้ดเพื่อเพิ่มลายน้ำข้อความหรือภาพในเอกสาร Word
- ทดสอบ API ในเครื่องโดยใช้เครื่องมืออย่าง Postman หรือ cURL
- ปรับใช้ API บน Windows, Linux หรือ macOS
- กำหนดค่า 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
- ติดตั้ง IIS และกำหนดค่าไซต์ให้ชี้ไปที่โฟลเดอร์แอปพลิเคชันที่เผยแพร่
- เผยแพร่แอปพลิเคชัน:
dotnet publish -c Release -o publish
Linux
- ติดตั้ง ASP.NET Core runtime:
sudo apt-get install -y aspnetcore-runtime-7.0
- เผยแพร่แอปพลิเคชัน:
dotnet publish -c Release -o publish
- กำหนดค่า Nginx เพื่อทำการ proxy การเข้าถึงไปยังเซิร์ฟเวอร์ Kestrel
macOS
- ติดตั้ง .NET runtime จาก เว็บไซต์ทางการ
- เผยแพร่และรัน:
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 และปรับใช้บนแพลตฟอร์มหลักทั้งหมด