.NET アプリケーション内で動作するセルフホスト型・超高速ドキュメントビューアを手に入れよう
このガイドを終える頃には、PDF、Office ファイル、CAD 図面、その他多数のフォーマットをブラウザ内で直接開くことができ、サブ秒のロード時間、外部 SaaS 呼び出しなし、そしてセキュリティを完全にコントロールできるようになります。
前提条件
| 必要なもの | 重要な理由 |
|---|---|
| .NET 6 以降(SDK は .NET 6+ を対象) | Online Document Viewer SDK との互換性を保証します |
| アプリケーションを実行できる Windows または Linux サーバー(オンプレミスまたはプライベートクラウド) | アプリケーションを実行できる環境が必要です |
| Online Document Viewer の NuGet フィードへのアクセス(https://doconut.com) | SDK は NuGet パッケージとして配布されます |
| ASP.NET Core とフロントエンド JavaScript の基本知識 | エンドポイントを公開し、ブラウザからビューアを起動します |
| ソースファイル用の保存場所(ファイルシステム、Blob ストレージ等) | ビューアはローカルまたはネットワークパスからファイルをレンダリングします。ソースはサーバープロセスからアクセス可能である必要があります |
| ビューアはローカルまたはネットワークパスからファイルをレンダリングします。ソースはサーバープロセスからアクセス可能である必要があります |
これらの項目のいずれかが欠けていると、コードの最初の行が実行される前にビルドが停止します。
Online Document Viewer SDK のインストール
Visual Studio またはお好みの IDE でソリューションを開き、NuGet マネージャーから公式 SDK を追加します:
dotnet add package Doconut.NET8
このパッケージにはレンダリングエンジン、フォーマットコンバータ、生成されたページを提供する薄い HTTP レイヤーが含まれています。SDK がアプリケーションにコンパイルされるため、実行時に外部サービスに接続されることはありません。
パッケージが復元されたら、Program.cs(または古いテンプレートの場合は Startup.cs)で SDK サービスを登録します。この登録により、レンダリングパイプラインが ASP.NET Core の DI コンテナに注入され、コントローラから利用できるようになります。
必要なフォーマット用にレンダリングパイプラインを構成する
ビューアは標準で 50 以上のフォーマットをサポートしており、以下が含まれます。
- PDF, DOC, DOCX, ODT, RTF
- XLS, XLSX, CSV, ODS
- PPT, PPTX, ODP
- DWG, DXF, DGN (CAD)
- PSD, SVG, TIFF, WEBP, ICO
- EML, MSG, EPUB, MOBI, MPP, VSD
リクエストが到着すると、SDK はファイルタイプを判定し、適切なコンバータを選択します。最高のパフォーマンスを得るために、リクエスト期間中にレンダリングされたページをメモリに保存する組み込みキャッシュレイヤーを有効にしてください。これが「超高速 – 最適化されたパフォーマンスとサブ秒ロードで瞬時にドキュメントをレンダリング」体験を実現します。
コントローラ内で SDK のレンダリングメソッド(例:RenderAsync)を呼び出し、ソースファイルの絶対パスを渡します。このメソッドは HTML フラグメントを返し、キャンバスベースのビューアを含みます。レンダリングはサーバー側で行われるため、クライアントは表示準備が整ったマークアップだけを受け取り、重いクライアント側処理が不要になります。
トークンベースの URL とオプション制限でビューアを保護する
データ主権と GDPR コンプライアンスはオンプレミス導入時の一般的な懸念事項です。SDK は ASP.NET Core の認証システムと統合されており、特定のドキュメントへの一回限りのアクセスを許可する署名付きトークンを生成できます。
典型的なフロー:
- フロントエンドが API にプレビュートークンを要求し、ドキュメント識別子を提供します。
- API がユーザーの権限を検証し、ファイルパスと有効期限タイムスタンプをエンコードした JWT 形式のトークンを作成し、トークンを返します。
- フロントエンドはトークンをビューア URL に付加します(例:
/viewer?token=…)。SDK は各リクエストでトークンを検証し、改ざんまたは期限切れのトークンを拒否します。
ユーザーがドキュメントのダウンロードや印刷をできないようにする場合は、SDK が提供するレンダリングオプションでそれらのアクションを無効化します。ビューアの JavaScript 層がダウンロードボタンを非表示にし、印刷ショートカットを抑制し、右クリックコンテキストメニューをブロックします。
すべてが正常に動作することを確認する
- ビューアをホストしているページへ移動します。
- ドキュメントは 1 秒以内に表示され、スクロールバー、ズームコントロール、検索ボックスが利用可能です。
- ダウンロードを無効化するようビューアを設定した場合、“ダウンロード” ボタンは非表示になります。
- その制限が有効な場合、ドキュメント上で右クリックしてもブラウザのコンテキストメニューは開きません。
- トークンが期限切れになると(デフォルトは 5 分)、ページをリフレッシュした際に “401 Unauthorized” エラーが返され、トークン検証が有効であることが確認できます。
これらのチェックのいずれかが失敗した場合は、該当する手順を見直してください:SDK の登録漏れ、トークン生成の誤り、またはセキュリティフラグの未設定。
