Expose a REST API to Watermark Word Documents

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

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

REST API를 통해 Word 문서에 물표를 추가하는 단계

  • ASP.NET Core Web API 프로젝트를 설정하여 워터마크를 추가합니다.
  • 설치 ASPOSE.Words .NET에 대한 정보 NuGet 패키지 관리자
  • Word 파일 및 워터마크 텍스트 또는 이미지 매개 변수를 수락하기 위해 최종 포인트를 가진 컨트롤러를 만듭니다.
  • 코드를 작성하여 Word 문서에 텍스트 또는 이미지 물표를 추가합니다.
  • Postman 또는 cURL과 같은 도구를 사용하여 API를 현지적으로 테스트합니다.
  • API를 Windows, Linux 또는 macOS 환경에 배치하십시오.
  • 생산 배치를 위한 Nginx 또는 IIS를 설정합니다.

이 단계는 watermark 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("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);
            }
        }
    }
}

주요 플랫폼에서의 운영

윈도우

  • IIS를 설치하고 게시된 응용 프로그램 폴더를 지정하기 위해 사이트를 설정합니다.
  • 신청서를 게시하십시오 :
dotnet publish -c Release -o publish

리눅스

  • ASP.NET 코어 실행 시간 설치:
sudo apt-get install -y aspnetcore-runtime-7.0
  • 신청서를 게시하십시오 :
dotnet publish -c Release -o publish
  • Nginx를 Kestrel 서버로 프로시 트래픽으로 설정합니다.

마코스

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

일반적인 문제와 고정

  • 실패한 입력 오류: 업로드된 파일이 유효한 Word 문서이며 워터마크 텍스트가 비공개하다는 것을 확인합니다.
  • Access Denied Errors: Linux/macOS에서 응용 프로그램 폴더에 적절한 허가를 부여합니다.
chmod -R 755 /path/to/app
  • 성능 문제: 대형 파일의 경우 스프레이 대신 디스크에서 직접 파일을 처리함으로써 메모리 사용을 최적화합니다.

이 가이드는 Aspose.Words for .NET를 사용하여 Word 문서에 물표를 추가하는 REST API를 만드는 방법을 보여주고 모든 주요 플랫폼에 배치합니다.

 한국어