ページ単位の画像
各ページはサーバーサイドでラスタライズされ、オンデマンドで配信されます。大容量文書はファイル全体がダウンロードされる前に、最初のページで開きます。
ブラウザに組み込まれた PDF ビューアはユーザーにファイルを渡すことで機能します。契約書や医療記録、入札書などでは、まさにそれを避けたい場合が多いです。Doconut はページをサーバーサイドでレンダリングし画像として送信するため、閲覧と所有が同じ行為でなくなります。
問題
ファイルを配信し、ブラウザにレンダリングさせる方法:最もシンプルで、ユーザーに元のバイト列、メタデータ、埋め込み添付ファイル、そしてワンクリックでそれらすべてを転送する機能を渡します。
JavaScript の PDF エンジンを配布する方法:ファイルはブラウザ内に残り、バンドルに実用的なダウンロード機能が追加されますが、ツールバー、サムネイルレール、検索ボックスは自分で実装しなければなりません。
サーバーサイドでレンダリングし画像を送信する方法:ユーザーはページを閲覧できますが、ファイルはインフラから出ません。同じ仕組みは Word、Excel、CAD、メールにも適用でき、これは通常、2スプリント後に求められる要件です。
機能
各ページはサーバーサイドでラスタライズされ、オンデマンドで配信されます。大容量文書はファイル全体がダウンロードされる前に、最初のページで開きます。
AdvancedSearch プラグインを使用すると、PDF のテキストレイヤーに対して全文検索が実行され、ヒットは正しいページに正しいハイライトで表示されます。
サムネイルレール、ページジャンプ、ズーム、幅に合わせる機能がウィジェットに含まれています。showThumbs と FitType を設定すれば完了です。
Annotation プラグインを使用すると、ハイライト、コメント、スタンプ、署名をアプリケーション側で保存・エクスポートでき、元ファイルに埋め込むことはありません。
暗号化された PDF は、コードが提供するパスワードでサーバーサイドで開かれます。パスワードはブラウザに届きません。
印刷はビューアの機能で、公開するか制限するかは選択できます。これはユーザーが元ファイルをダウンロードできるかどうかとは別の判断です。
統合
クライアントはトークンのみを受け取ります。ファイル名や保存場所、カタログ内の他のものではなく PDF であることは一切知らされません。
サポートされている拡張子
// Server-side: returns an opaque token, never a path or a URL
app.MapPost("/api/open", async (Viewer viewer) =>
{
string token = await viewer.OpenDocumentAsync("wwwroot/files/Contract.pdf");
return Results.Ok(new { token });
});
// For an encrypted PDF, supply the password server-side —
// it is used to decrypt in your process and goes no further.詳細
自分で実装した場合のみ可能です。ビューアは不透明なトークンで指定されたページ画像を配信するため、元ファイルの公開はコード内で明示的に決定することになり、閲覧を許可するだけの副作用ではありません。
画像としては問題なくレンダリングされますが、検索対象はありません。OCR は AdvancedSearch プラグイン経由でのみ提供され、一般には利用できません — エンジンは再構築中のため、現時点での計画には組み込まないでください。
ページはオンデマンドでレンダリング・配信されるため、文書の長さはメモリ使用量にほとんど影響せず、ページの複雑さが主な要因です。実際のコストはページ数ではなく、重いベクターページです。
一時ライセンスの取得には数分かかり、完全にご自身のマシン上で実行されます。重要なファイルは、現在のビューアで既に問題を起こしているものです。