Expose a REST API to Watermark Word Documents

ASP.NET Core REST API aracılığıyla Word belgelerine su işaretleri nasıl eklenir

Bu kılavuz size **ASP.NET Core’daki Word belgelerine su işaretlerini eklemek için REST API’yi nasıl ortaya koyacağınızı **yönlendirir.

REST API aracılığıyla Word belgelerine su işaretleri ekleme adımları

  • Su işaretleri eklemek için bir ASP.NET Core Web API projesi oluşturun.
  • Yükleme Aspose.Words için .NET NuGet Paket Yöneticisi.
  • Word dosyalarını ve su işareti metin veya görüntü parametrelerini kabul etmek için bir son noktası olan bir denetleyici oluşturun.
  • Word belgelerine metin veya görüntü su işaretleri eklemek için kod yazın.
  • API’yi yerel olarak Postman veya cURL gibi araçlar kullanarak test edin.
  • API’yi Windows, Linux veya macOS ortamlarında yerleştirin.
  • Yükleme için Nginx veya IIS ayarlayın.

Bu adımlar Watermark API oluşturmak ve ortaya çıkarmak için ayrıntılı bir yaklaşım sağlar.

Kod Örneği: REST API su işaretleri eklemek için

Aşağıda, Word belgelerine metin su işaretlerini ekleyen bir REST API’yi sergilemek için çalıştırılabilir bir kod çizgisi:

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);
            }
        }
    }
}

Büyük Platformlarda Kullanım

Windows için

  • IIS’i kurun ve yayınlanan uygulama klasörüne işaret etmek için siteyi ayarlayın.
  • Başvuruyu yayınlayın :
dotnet publish -c Release -o publish

Linux için

  • ASP.NET Core çalışma süresini ayarlayın:
sudo apt-get install -y aspnetcore-runtime-7.0
  • Başvuruyu yayınlayın :
dotnet publish -c Release -o publish
  • Nginx’i Kestrel sunucusuna proxy trafiğine ayarlayın.

macos için

dotnet publish -c Release -o publish
cd publish
dotnet WatermarkAPI.dll

Toplam Sorunlar ve Çözümler

  • Kötü giriş hataları: Yüklenen dosyanın geçerli bir Word belgesi olduğundan ve su işareti metnin boş olmadığından emin olun.
  • Access Denied Errors: Linux/macOS’ta, uygulama klasörüne uygun izinler verin.
chmod -R 755 /path/to/app
  • Performans Sorunları: Büyük dosyalar için, dosyaları akış yerine diskten doğrudan işleyerek hafıza kullanımını optimize edin.

Bu kılavuz size Aspose.Words for .NET kullanarak Word belgelerine su işaretlerini eklemek için REST API’yi nasıl oluşturacağınızı ve tüm büyük platformlarda nasıl dağıtılacağını göstermiştir.

 Türkçe