ASP.NET Core の DOCX ビューア: Word ファイルのプレビュー
← Back to Blog••2 min read

ASP.NET Core の DOCX ビューア: Word ファイルのプレビュー

ASP.NET Core アプリケーション内で Word ドキュメントをプレビューするには、サーバーでファイルをレンダリングし、ブラウザにページを表示する DOCX ビューア SDK を使用します。Doconut はサーバーに Microsoft Word をインストールせずにこのワークフローを提供します。ユーザーは別のデスクトッププログラムを開く代わりに、アプリケーション内で契約書、提案書、レポートなどを読むことができます。

象牙色のレポートがテーブルとチャートを含み、紺色のフォルダーから透明なガラスの閲覧フレームへと広がっています
象牙色のレポートがテーブルとチャートを含み、紺色のフォルダーから透明なガラスの閲覧フレームへと広がっています

実用的な質問は、デモファイルを自分のドキュメントに置き換えたときに何が起こるか、ということです。契約書にはカスタムフォント、繰り返しヘッダー、広いテーブル、署名ページが含まれることがあります。このガイドでは .NET 8 アプリケーション向けのドキュメントオープン手順と、結果を評価するためのチェックポイントを示します。

C# から DOCX ファイルを開く

Doconut .NET 8 クイックスタート から始めて、サービス、ASP.NET セッション、ドキュメントミドルウェア、ビューアリソース、ブラウザウィジェットを構成します。以下のエンドポイントはその構成済みアプリケーションに拡張するもので、完全なスタンドアロン アプリケーションではありません。

App_Data/Sample.docx に機密でないテストドキュメントをアプリケーションのコンテンツルート以下に配置します。app.Run() の前にこのエンドポイントを追加してください:

using Doconut;

app.MapPost("/api/preview-word", async (
    Viewer viewer,
    IWebHostEnvironment environment) =>
{
    var filePath = Path.Combine(
        environment.ContentRootPath, "App_Data", "Sample.docx");

    if (!File.Exists(filePath))
        return Results.NotFound();

    var token = await viewer.OpenDocumentAsync(filePath);
    return Results.Ok(new { token });
});

Program.cs の先頭にある他のインポートと同様に using ディレクティブを保持してください。固定パスにすることで例を簡単に再現でき、ブラウザから任意のサーバーパスを受け入れることを防ぎます。

Viewer API リファレンス では OpenDocumentAsync のファイルパス オーバーロードが記載されています。ファイルを開き、ドキュメント セッション トークンを返します。クイックスタートで既に objViewer が初期化されているページで、次のようにプレビューを開きます:

async function previewWordDocument() {
    const response = await fetch('/api/preview-word', {
        method: 'POST'
    });

    if (!response.ok) {
        throw new Error('The Word preview could not be opened.');
    }

    const { token } = await response.json();
    objViewer.View(token);
}

この関数をページのプレビュー アクションから呼び出し、エラーはアプリケーション既存のエラー UI を通じて表示してください。この例ではリクエストをビューアと同じアプリケーション オリジンに保ちます。

アプリケーション制御下でドキュメントへのアクセスを管理する

顧客ポータルでは、固定サンプルをアプリケーションが選択したドキュメント レコードに置き換えます。ストレージ位置を解決して開く前に、現在のユーザーがそのレコードを閲覧できるか確認してください。ブラウザから受け取ったファイル名は認可判断の根拠にはなりません。

保護されたオリジナルはパブリック Web ルートの外に保存します。例の App_Data フォルダーは保存規約であり、アクセス制御機能ではありません:静的ファイルマッピングで公開しないでください。認証とドキュメント権限はホスト アプリケーションで管理します。

ブラウザはドキュメント セッション用の閲覧トークンを受け取ります。そのトークンは永続的なドキュメント URL ではなく認証情報として扱ってください。クイックスタートでは、リーダーが離脱したり別ファイルを開いたりしたときのドキュメント閉鎖もカバーしています。

代表的なファイルで Word レイアウトをテストする

空の DOCX では、顧客が使用するドキュメントについてほとんど分かりません。実際に表示が必要なテンプレートから、機密情報を除去した小規模な評価セットを作成します。

テストドキュメントプレビューで確認すべき項目
ヘッダーとフッター付き契約書繰り返しコンテンツ、ページ番号、署名ページの配置
企業フォント使用の提案書フォント置換、改行、見出し幅
幅広または入れ子テーブルを含むレポート列幅、行分割、ページ境界で切れるテキスト
縦横混在セクションのドキュメントページサイズとセクション間の遷移
画像が多いマニュアル画像配置、キャプション、ズーム時の可読性

レンダリング結果を承認済みの元ドキュメントと比較してください。統合を進める前に、ワークフローにとって重要な差異を判断します。

Doconut は WordConfig を通じて Word 固有のレンダリング設定を公開しています。フォーマット設定リファレンス には、追加フォント ディレクトリ用の FontFolders、用紙サイズ設定、テーブルフィット用の AutoFitAllTables が含まれます。これらは意図的に変更してください。テーブルを利用可能幅に合わせると、保持したいレイアウトが変わることがあります。

デプロイ先ホストでも同様のチェックを繰り返します。開発者のマシンにインストールされたフォントを使用したプレビューは、サーバーにそのフォントが無い場合に見た目が変わります。組織が配布許可しているフォントを使用してください。

ビューイング、編集、変換を個別に選択する

DOCX プレビューは閲覧ステップを解決しますが、アプリケーションを Word 執筆環境に変えるわけではありません。

  • Reading: ケース、注文、顧客レコード内で既存のドキュメントを検査する必要がある場合にビューアを使用します。
  • Editing: ユーザーが段落を書き直し、更新された DOCX を保存する必要がある場合は、別途編集ワークフローを評価してください。ファイルのプレビューは Word 編集サポートの証拠にはなりません。
  • Conversion: 別形式でのダウンロードが要件である場合は、ページ表示とは別にエクスポートワークフローを評価してください。

Word ビューア(.NET 用)概要 では Doconut の Word 系列ビューイング パスが説明されています。製品適合性を確認し、次に自分のファイルでアプリケーションにとって重要なレンダリング挙動を評価してください。

最も難しいドキュメントでビューアを評価する

すでにサポート要求が多いドキュメント、たとえば長大な契約書、テーブルが多いレポート、または特殊フォントを使用したテンプレートから始めます。プレビューを確認し、数ページをナビゲートし、新しいセッションで再度開き、周辺アプリケーションが正しいドキュメント権限を強制していることを検証してください。

Doconut をダウンロード して、そのファイルで .NET 8 サンプルを実行します。成功した評価は、ユーザーが実際に受け取るドキュメントをレイアウトを確認した上で読み取れ、アプリケーションが維持できる統合であることを示すはずです。

#DOCX Viewer#ASP.NET Core#Word Documents#C##Document Preview#DOCX ビューア#Word ドキュメント#ドキュメント プレビュー