Watermark Word 문서에 대한 REST API 노출

ASP.NET Core REST API를 통해 Word 문서에 워터마크 추가하는 방법

이 튜토리얼은 ASP.NET Core에서 워터마크를 추가하는 REST API를 노출하는 방법을 안내합니다. 단계별 지침, 설정 세부정보 및 주요 플랫폼에 대한 배포 지침이 포함되어 있습니다.

REST API를 통한 워터마크 추가 단계

  1. 워터마크 추가를 위한 ASP.NET Core Web API 프로젝트를 설정합니다.
  2. NuGet 패키지 관리자를 통해 Aspose.Words for .NET을 설치합니다.
  3. Word 파일과 워터마크 텍스트 또는 이미지 매개변수를 수신하는 엔드포인트가 있는 컨트롤러를 생성합니다.
  4. Word 문서에 텍스트 또는 이미지 워터마크를 추가하는 코드를 작성합니다.
  5. Postman 또는 cURL과 같은 도구를 사용하여 로컬에서 API를 테스트합니다.
  6. Windows, Linux 또는 macOS 환경에 API를 배포합니다.
  7. 프로덕션 배포를 위해 Nginx 또는 IIS를 구성합니다.

이 단계들은 워터마크 API를 생성하고 노출하는 자세한 접근 방식을 제공합니다.

코드 예제: 워터마크 추가를 위한 REST API

아래는 Word 문서에 텍스트 워터마크를 추가하는 REST API를 노출하기 위한 실행 가능한 코드 스니펫입니다:

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 런타임을 설치합니다:
    sudo apt-get install -y aspnetcore-runtime-7.0
  2. 애플리케이션을 게시합니다:
    dotnet publish -c Release -o publish
  3. Nginx를 구성하여 Kestrel 서버로 트래픽을 프록시합니다.

macOS

  1. 공식 사이트에서 .NET 런타임을 설치합니다.
  2. 게시하고 실행합니다:
    dotnet publish -c Release -o publish
    cd publish
    dotnet WatermarkAPI.dll

일반적인 문제 및 해결 방법

  1. 잘못된 입력 오류: 업로드된 파일이 유효한 Word 문서인지 확인하고 워터마크 텍스트가 비어 있지 않은지 확인합니다.
  2. 액세스 거부 오류: Linux/macOS에서 애플리케이션 폴더에 적절한 권한을 부여합니다.
    chmod -R 755 /path/to/app
  3. 성능 문제: 큰 파일의 경우 스트림이 아닌 디스크에서 직접 파일을 처리하여 메모리 사용을 최적화합니다.

이 가이드는 Aspose.Words for .NET을 사용하여 Word 문서에 워터마크를 추가하는 REST API를 생성하고 모든 주요 플랫폼에 배포하는 방법을 보여주었습니다.

 한국어