Word文書に透かしを追加するためのREST APIを公開する

ASP.NET Core REST APIを使用してWord文書に透かしを追加する方法

このチュートリアルでは、ASP.NET CoreでWord文書に透かしを追加するためのREST APIを公開する方法を説明します。ステップバイステップの指示、セットアップの詳細、および主要プラットフォーム向けのデプロイガイドラインが含まれています。

REST APIを介してWord文書に透かしを追加する手順

  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を作成し、すべての主要プラットフォームにデプロイする方法を示しました。

 日本語