PDF

PDF を渡さない PDF ビューア

ブラウザに組み込まれた PDF ビューアはユーザーにファイルを渡すことで機能します。契約書や医療記録、入札書などでは、まさにそれを避けたい場合が多いです。Doconut はページをサーバーサイドでレンダリングし画像として送信するため、閲覧と所有が同じ行為でなくなります。

0
クライアントに送信された元 PDF のバイト数
100%
サーバーサイドレンダリング
1
他のすべての形式にも対応するビューア

問題

PDF を表示する3つの方法とそれぞれのコスト

ファイルを配信し、ブラウザにレンダリングさせる方法:最もシンプルで、ユーザーに元のバイト列、メタデータ、埋め込み添付ファイル、そしてワンクリックでそれらすべてを転送する機能を渡します。

JavaScript の PDF エンジンを配布する方法:ファイルはブラウザ内に残り、バンドルに実用的なダウンロード機能が追加されますが、ツールバー、サムネイルレール、検索ボックスは自分で実装しなければなりません。

サーバーサイドでレンダリングし画像を送信する方法:ユーザーはページを閲覧できますが、ファイルはインフラから出ません。同じ仕組みは Word、Excel、CAD、メールにも適用でき、これは通常、2スプリント後に求められる要件です。

機能

ビューアが PDF で行うこと

ページ単位の画像

各ページはサーバーサイドでラスタライズされ、オンデマンドで配信されます。大容量文書はファイル全体がダウンロードされる前に、最初のページで開きます。

テキストレイヤー検索

AdvancedSearch プラグインを使用すると、PDF のテキストレイヤーに対して全文検索が実行され、ヒットは正しいページに正しいハイライトで表示されます。

サムネイルとナビゲーション

サムネイルレール、ページジャンプ、ズーム、幅に合わせる機能がウィジェットに含まれています。showThumbs と FitType を設定すれば完了です。

注釈

Annotation プラグインを使用すると、ハイライト、コメント、スタンプ、署名をアプリケーション側で保存・エクスポートでき、元ファイルに埋め込むことはありません。

パスワード保護ファイル

暗号化された PDF は、コードが提供するパスワードでサーバーサイドで開かれます。パスワードはブラウザに届きません。

印刷をコントロール

印刷はビューアの機能で、公開するか制限するかは選択できます。これはユーザーが元ファイルをダウンロードできるかどうかとは別の判断です。

統合

PDF のオープン

クライアントはトークンのみを受け取ります。ファイル名や保存場所、カタログ内の他のものではなく PDF であることは一切知らされません。

サポートされている拡張子

.pdf
csharp
// 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.

詳細

PDF の詳細

  • テキストレイヤー検索には AdvancedSearch プラグインが必要です。OCR は一般には利用できず、スキャンページに対して想定すべきではありません。
  • 注釈には Annotation プラグインが必要で、アプリケーション側に保存され、元の PDF に書き戻されません。
  • PDF を Word、Excel、画像に変換するには Converter プラグインと DocumentConverter.ConvertAsync() が必要です。

よくある質問

ユーザーは元の PDF をダウンロードできるでしょうか?

自分で実装した場合のみ可能です。ビューアは不透明なトークンで指定されたページ画像を配信するため、元ファイルの公開はコード内で明示的に決定することになり、閲覧を許可するだけの副作用ではありません。

テキストレイヤーのないスキャン PDF でも動作しますか?

画像としては問題なくレンダリングされますが、検索対象はありません。OCR は AdvancedSearch プラグイン経由でのみ提供され、一般には利用できません — エンジンは再構築中のため、現時点での計画には組み込まないでください。

どれくらい大きな PDF に対応できますか?

ページはオンデマンドでレンダリング・配信されるため、文書の長さはメモリ使用量にほとんど影響せず、ページの複雑さが主な要因です。実際のコストはページ数ではなく、重いベクターページです。

自分のドキュメントで試す

一時ライセンスの取得には数分かかり、完全にご自身のマシン上で実行されます。重要なファイルは、現在のビューアで既に問題を起こしているものです。