ビューア
メインのドキュメントビューアクラス
Viewer (namespace Doconut) は、Razor ページ、MVC コントローラー、Blazor コンポーネント、または最小限の API からドキュメントを開くための公開エントリーポイントです。sealed で、AddDoconut() によって transient サービスとして登録され、コンストラクタ注入で解決されます — 直接インスタンス化しないでください。
Viewer はリクエストごとの状態を保持せず、意図的に IDisposable を実装 しません。ドキュメントセッションはセッションキャッシュ内で独立して存在するため、サービスを破棄しても開いているドキュメントが削除されることはありません(Core Concepts → How the Viewer Works を参照)。
OpenDocumentAsync
ドキュメントを開き、クライアントウィジェットが以降のすべてのリクエストで使用するセッショントークンを返します。
| オーバーロード | 使用シーン |
|---|---|
Task<string> OpenDocumentAsync(string filePath, DocOptions? options = null, CancellationToken ct = default) | 自動フォーマット検出とフォーマットのデフォルト設定でディスクから開く |
Task<string> OpenDocumentAsync(string filePath, BaseConfig? config, DocOptions? options = null, CancellationToken ct = default) | フォーマットごとのレンダリングオプション(PdfConfig、WordConfig、…)が必要な場合 |
Task<string> OpenDocumentAsync(Stream stream, FileInfo fileInfo, BaseConfig? config = null, DocOptions? options = null, CancellationToken ct = default) | ドキュメントがディスク上のファイルではありません(アップロード、データベース、Blob)。fileInfo は正しい拡張子を持たなければならず、フォーマット検出の基準となります |
// シンプルなオープン
string token = await viewer.OpenDocumentAsync(path);
// フォーマットごとの設定とオプション付き
token = await viewer.OpenDocumentAsync(
path,
new PdfConfig { AllowSearch = true, AllowCopy = true },
new DocOptions { TimeOut = 30 });
// アップロードから
await using var ms = new MemoryStream();
await file.CopyToAsync(ms);
ms.Position = 0;
token = await viewer.OpenDocumentAsync(ms, new FileInfo(file.FileName));処理すべき例外:
LicenseException— 見つかったライセンスが拒否された場合(メッセージに拒否理由が含まれます)、またはフォーマットがもはや付与されていないプラグイン機能を必要とする場合。拒否メッセージなしのカレンダー期限切れは、例外をスローする代わりに透かし付きレンダリングにフォールバックします。FormatNotSupportedException—Document format '<extension>' is not supported.InvalidDataException— ファイル内容が破損しているか、拡張子と一致しません。
CloseDocument
void CloseDocument(string token)キャッシュからセッションを削除し(ドキュメントエンジンを即座に破棄)、セキュリティマーカーを削除し、アクセス権を取り消します。オプションとして、スライディング有効期限も同様のクリーンアップを行いますが、大きなドキュメントには推奨されます。
GetPageCount
int GetPageCount(string token)開いているセッションの総ページ数です。トークンが不明または期限切れの場合は例外をスローします。
DocOptions
オープンごとに設定できる、フォーマット非依存オプション (namespace Doconut):
| 型 | プロパティ | デフォルト | 説明 |
|---|---|---|---|
string | Password | "" | 保護されたドキュメントのパスワード(自動的にフォーマット設定にコピーされます)。 |
int | ImageResolution | 0 | Obsolete. 互換性のためだけに保持されています — 代わりにフォーマット設定で ImageResolution を設定してください。 |
string | Watermark | "" | レンダリングされたページに描画されるカスタム透かしテキスト。書式文字列: "^Text~Color~FontSize~FontName~Opacity~Angle"、例: "^Sample Copy~Red~24~Verdana~80~-45"。 |
int | TimeOut | 60 | セッションのスライディング有効期限(分単位)。 |
bool | IsSecured | true | Not currently enforced — 予約されています。トークンバインディングは全体的に DoconutOptions.UnsafeMode によって制御されます(Core Concepts → Sessions & Security を参照)。 |
このクラスは、通常の単一ホスト閲覧フローの外に意図的に配置された、特化したプロパティも公開しています:
| 型 | プロパティ | デフォルト | 説明 |
|---|---|---|---|
bool | IsWebFarm | false | オープン操作がウェブファームシナリオであることを示します。対応する共有ストレージ/セッションアーキテクチャと併用してください。 |
string | WebFarmPath | "" | 特化したウェブファームワークフローで使用される共有パス。通常の単一ホストビューアでは空です。 |
bool | EditMode | false | 別途配布されるエディターワークフロー用に予約されています;標準ビューア用に false を残してください。 |
カスタム透かし
DocOptions.Watermark は6つのチルダ区切りフィールドを使用します。オプションの先頭 ^ は全コーナーレイアウトを要求します:
^Text~Color~FontSize~FontName~Opacity~Anglestring token = await viewer.OpenDocumentAsync(
path,
new PdfConfig(),
new DocOptions
{
Watermark = "^Confidential~Red~24~Verdana~80~-45",
TimeOut = 30
});| フィールド | 例 | 意味 |
|---|---|---|
先頭 ^ | ^ | オプションの全コーナーレイアウトです。これがない場合は通常の透かし配置が使用されます。 |
| テキスト | Confidential | 各ページに描画されるテキストです。空であってはなりません。 |
| 色 | Red | 描画レイヤーが理解できる名前付きカラーです。 |
| フォントサイズ | 24 | フォントサイズ。無効な数値入力はレンダラのデフォルトにフォールバックします。 |
| フォント名 | Verdana | 要求されたフォントファミリーです。デプロイ環境にインストールされていることを確認してください。 |
| 不透明度 | 80 | 0から255までのバイト値です。正しく解析できなければなりません。 |
| 角度 | -45 | 度単位の回転角度です。無効な数値入力はデフォルトにフォールバックします。 |
パーサーはオプションの ^ の後に正確に6つのフィールドがあることを期待します。無効な定義は、黙って消える代わりに SDK の可視 Invalid Watermark フォールバックに置き換えられます。
ライセンスの判断
| ライセンス状態 | カスタム値が提供されたか | レンダリング結果 |
|---|---|---|
| 有効な有料ビューアライセンス | いいえ | クリーンページ |
| 有効な有料ビューアライセンス | はい | カスタム透かし |
| アクティブな一時/デモベースビューア | いいえ | クリーンベースビューアページ |
| アクティブな一時/デモベースビューア | はい | クリーンベースビューアパスが適用される場合のカスタム透かし |
| 欠損、拒否、期限切れ、バージョン不一致、または無効ドメインのライセンス | いずれか | 強制/評価透かし;カスタム値はそれを上書きしません |
| 評価ルール下のプラグインレンダリング | いずれか | 評価透かし |
同じ判断が配信されるページ画像およびアノテーションのエクスポートにも適用されます。アニメーションGIF出力はフレームごとにスタンプが付けられます。したがって、カスタム透かしは評価透かしを置き換えたり抑制したりする手段ではなく、ライセンスされたアプリケーション機能です。
アノテーション API
サーバー側のアノテーションのロードとエクスポートです。完全な手順は ガイド → アノテーション にあります;概要は次のとおりです:
| メンバー | 目的 |
|---|---|
AnnotationManager GetAnnotationManager(string token) | オープンセッションのページ寸法にバインドされたマネージャー |
AnnotationManager GetAnnotationManager(string token, int pageWidth, int pageHeight) | 明示的なページ寸法を持つマネージャー |
AnnotationManager GetAnnotationManager(int pageWidth, int pageHeight) | セッションに依存しないマネージャー |
void LoadAnnotationData(string token, AnnotationManager manager) | C#で作成されたアノテーションをセッションにロードする |
void LoadAnnotationData(string token, string annotationData) | AnnotationManager.GetAnnotationData() が返すエンコードされたページ/Base64 エンベロープからアノテーションをロードする |
void LoadAnnotationXML(string token, XmlDocument annotationXml) | XML からアノテーションをロードする |
XmlDocument GetAnnotationXML(string token) | セッションのアノテーションを XML としてエクスポートする |
Task<byte[]> ExportAnnotationsToPdfAsync(string token, int zoom = 100, CancellationToken ct = default) | アノテーションが焼き付けられた PDF |
Task<int> ExportAnnotationsToPngAsync(…) | アノテーションが焼き付けられた PNG ファイル |
Task<byte[]> ExportAnnotationsToPngZipAsync(string token, int zoom = 100, CancellationToken ct = default) | ページごとの PNG にアノテーションが焼き付けられた ZIP |
DICOM メタデータ
Task<DicomMetadata?> GetDicomMetadataAsync(string token, CancellationToken ct = default)このメソッドは API の整合性のために存在しますが、.NET 6 DICOM ビューアは技術タグを提供できません。DICOM および非 DICOM セッションでは null を返します;DICOM セッションではプラットフォームの制限を説明する一度だけの警告も出力します。ページ、フレーム、アニメーションのレンダリングは引き続きサポートされています。
リソースヘルパー — ReferenceCss / ReferenceScripts
UseDoconutResources() が提供する埋め込みリソース用に <link>/<script> タグを正しい依存順序で出力します。検索やアノテーションなどライセンス制御機能のバンドルは、ライセンスが有効な場合にのみ 出力され、クライアント UI をサーバーの動作と一致させます。
string ReferenceCss(CssConfig? config = null) // null → Bootstrap + viewer + search + annotation
string ReferenceScripts(ScriptConfig? config = null)CssConfig フラグ: IncludeBootstrapCss, IncludeViewerCss, IncludeSearchCss (search-gated), IncludeAnnotationCss (annotation-gated).
ScriptConfig フラグ: IncludeJQuery (すべての他に必要), IncludeBootstrap, IncludeViewerScripts (コア: docViewer.js + スプリッタ + リンク), IncludeSearchScripts と IncludeSearchBar (検索制御), IncludeAnnotationScripts と IncludeAnnotationBar (アノテーション制御).
@inject Doconut.Viewer Viewer
@Html.Raw(Viewer.ReferenceCss(new CssConfig { IncludeBootstrapCss = true, IncludeViewerCss = true }))
@Html.Raw(Viewer.ReferenceScripts(new ScriptConfig { IncludeJQuery = true, IncludeViewerScripts = true }))ワークシート名の取得
IReadOnlyList<string> GetWorksheetNames(string token)開いているスプレッドシートのワークシート名をブックの順序で返します。スプレッドシートでない開いているドキュメントの場合は空のリストを返します。
26.9.0で追加。
このページは役に立ちましたか?