Watermark Word 문서에 대한 REST API 노출
ASP.NET Core REST API를 통해 Word 문서에 워터마크 추가하는 방법
이 튜토리얼은 ASP.NET Core에서 워터마크를 추가하는 REST API를 노출하는 방법을 안내합니다. 단계별 지침, 설정 세부정보 및 주요 플랫폼에 대한 배포 지침이 포함되어 있습니다.
REST API를 통한 워터마크 추가 단계
- 워터마크 추가를 위한 ASP.NET Core Web API 프로젝트를 설정합니다.
- NuGet 패키지 관리자를 통해 Aspose.Words for .NET을 설치합니다.
- Word 파일과 워터마크 텍스트 또는 이미지 매개변수를 수신하는 엔드포인트가 있는 컨트롤러를 생성합니다.
- Word 문서에 텍스트 또는 이미지 워터마크를 추가하는 코드를 작성합니다.
- Postman 또는 cURL과 같은 도구를 사용하여 로컬에서 API를 테스트합니다.
- Windows, Linux 또는 macOS 환경에 API를 배포합니다.
- 프로덕션 배포를 위해 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
- IIS를 설치하고 사이트가 게시된 애플리케이션 폴더를 가리키도록 구성합니다.
- 애플리케이션을 게시합니다:
dotnet publish -c Release -o publish
Linux
- ASP.NET Core 런타임을 설치합니다:
sudo apt-get install -y aspnetcore-runtime-7.0
- 애플리케이션을 게시합니다:
dotnet publish -c Release -o publish
- Nginx를 구성하여 Kestrel 서버로 트래픽을 프록시합니다.
macOS
- 공식 사이트에서 .NET 런타임을 설치합니다.
- 게시하고 실행합니다:
dotnet publish -c Release -o publish cd publish dotnet WatermarkAPI.dll
일반적인 문제 및 해결 방법
- 잘못된 입력 오류: 업로드된 파일이 유효한 Word 문서인지 확인하고 워터마크 텍스트가 비어 있지 않은지 확인합니다.
- 액세스 거부 오류: Linux/macOS에서 애플리케이션 폴더에 적절한 권한을 부여합니다.
chmod -R 755 /path/to/app
- 성능 문제: 큰 파일의 경우 스트림이 아닌 디스크에서 직접 파일을 처리하여 메모리 사용을 최적화합니다.
이 가이드는 Aspose.Words for .NET을 사용하여 Word 문서에 워터마크를 추가하는 REST API를 생성하고 모든 주요 플랫폼에 배포하는 방법을 보여주었습니다.