このサイトにファイルをドロップして閲覧してきました。ある時、同じことを自分が開発しているアプリケーション内で実現できないかと尋ねられます――ケースファイルや請求書、図面などを、ダウンロードせずに自分のページで開くことはできるのでしょうか。可能です。そして、決定すべきことは見た目ほど多くなく、実際に変わるのはたった一つだけです。

変わる唯一の点:ファイルの行き先
ここでは、ドキュメントを当社にアップロードするとレンダリングされ、閉じたときに削除されます。これは、一度送られてきて今すぐ読みたいファイルに対しては適切な取引です。
しかし、あなたが移動させる権限のないドキュメントにとっては不適切です。医療記録や署名済み契約書、NDA 下の図面などは、インフラストラクチャから外部へ出すことはできません。削除の約束だけでは解決できません。ファイルは一度でも転送された時点でリスクが生じるからです。レンダラを組み込むことで状況が逆転します。ドキュメントはサーバー側で、あなたのネットワーク内で開かれ、ブラウザに届くのはレンダリング結果だけです。ファイル自体は決して移動しません。
これが組み込むべき理由です。その他は細部にすぎません。
コンポーネントであり、ウィジェットではない
多くの人が最初に誤解する点は、これはブラウザでファイルを開く JavaScript ではないということです。これはプロジェクトから参照するネイティブな .NET コンポーネントであり、レンダリングはサーバー側で行われます。ページはその結果を受け取ります。
この結果として二つの影響があります。良い点は、ブラウザ側に何もインストールする必要がないことです――プラグインも ActiveX もリーダーも不要なので、ロックダウンされたデスクトップでもスマートフォンでも同様に動作します。注意すべき点は、処理をサーバーが行うため、200 ページの PDF と 40 MB の図面では要求が同じではないということです。受け入れ可能な最大サイズのファイルに合わせてマシンを構成し、アップロード時にそれ以上のサイズは拒否してください。
開始前に決めるべきこと
以下の3つの質問があり、いずれもビューアそのものに関するものではありません:
- ドキュメントはどこから取得するか — データベース、ファイル共有、Blob ストレージ?
- 誰がこのドキュメントを見ることを許可されているか、そしてビューアの URL がそれを強制するのか、単に想定しているだけなのか? ドキュメント ID を知っている誰でもアクセスできるレンダリングエンドポイントは典型的なセキュリティホールです。
- レンダリングが生成する一時ファイルはどう扱うか、そしていつ削除するか。
これらに答えれば統合は簡単です。後回しにすると、既に動作しているビューアに対して認可機能を後付けすることになり、より困難になります。
実行環境
.NET Framework 4.0 以降、.NET Standard 2.0 以降で動作します。そのため WebForms、MVC、ASP.NET Core、Blazor Server、Linux コンテナでも利用可能です。サーバーに Office をインストールする必要はなく、レンダラはフォーマットを直接読み取ります。
もし今日、1つのファイルだけを読みたいのであれば、PDF ビューア とここにある他のビューアがその役割を果たします。対象が自分のアプリケーションである場合、コンポーネントとそのパッケージ、API ドキュメントは Doconut.com にあります。