ビューア

主要なドキュメントビューアクラス

Viewer (namespace Doconut) は、MVC コントローラ、Web Forms ページ、ハンドラからドキュメントを開くための公開エントリーポイントです。DoconutHost.Initialize によって構成される transient サービスです。使用する場所で解決してください:

csharp
var viewer = Doconut.DoconutHost.Services.GetRequiredService<Viewer>();

new Viewer() は DoconutHost.Initialize が実行された後でも動作します — 同じサービスを解決します — これにより、従来のパッケージから移行したコードのコンパイルが保たれます。Initialize の前に呼び出すと InvalidOperationException がスローされます。

Viewer はリクエストごとのドキュメント状態を保持せず、意図的に not IDisposable を実装していません:ドキュメントセッションはそれとは独立して存在するため、Viewer を破棄しても開いているドキュメントは閉じられません(ビューアの仕組み を参照)。

OpenDocumentAsync

ドキュメントを開き、ウィジェットが以降のすべてのリクエストで使用するセッショントークンを返します。UnsafeMode が false(デフォルト)の場合、トークンは現在のリクエストの ASP.NET セッションに付与されます — セッション状態を持つリクエストから呼び出してください(セッションとセキュリティ を参照)。

オーバーロード使用シーン
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 は正しい拡張子を持つ必要があります — フォーマットを選択します
csharp
// Simple open
string token = await viewer.OpenDocumentAsync(path);

// With per-format config and options
token = await viewer.OpenDocumentAsync(
    path,
    new PdfConfig { AllowSearch = true, AllowCopy = true },
    new DocOptions { TimeOut = 30 });

// From an upload (HttpPostedFileBase in MVC; HttpPostedFile in Web Forms)
using (var ms = new MemoryStream())
{
    await file.InputStream.CopyToAsync(ms);
    ms.Position = 0;
    token = await viewer.OpenDocumentAsync(ms, new FileInfo(Path.GetFileName(file.FileName)));
}

対処すべき例外:

  • LicenseException — ライセンスが見つかりましたが拒否されました(メッセージに理由が含まれます)、またはフォーマットがライセンスで許可されていないプラグイン機能を必要とする場合。
  • FormatNotSupportedException — ファイルの拡張子を処理できるビューアがありません。
  • InvalidDataException — コンテンツが破損しているか、拡張子と一致しません。

OpenDocument(同期)

Web Forms のコードビハインドや非同期ページを使用しないその他のコード向け:

text
string OpenDocument(string filePath, BaseConfig? config = null, DocOptions? options = null)
string OpenDocument(Stream stream, string fileName, BaseConfig? config = null, DocOptions? options = null)
string OpenDocument(byte[] bytes, string fileName, BaseConfig? config = null, DocOptions? options = null)

各メソッドはトークンを返し、さらに viewer.Token にも保存します。fileName は正しい拡張子を持つ必要があります。これらのラッパーは Web Forms ページから安全に呼び出せます:オープンパスは ASP.NET のリクエストコンテキストで再開されないため、待機してもデッドロックしません。すべての非同期 Doconut API が同様というわけではありません — コンバータプラグイン の Web Forms セクションを参照してください。

CloseDocument

text
void CloseDocument(string token)

セッションを削除し(ドキュメントエンジンを即座に解放)、現在のリクエストの ASP.NET セッションからトークンの権限を削除し、トークンを無効化します。オプションで、スライディング有効期限も同様のクリーンアップを行いますが、大きなドキュメントの場合は推奨されます。

Session queries

MemberReturns
int GetPageCount(string token)開いているドキュメントの総ページ数
(int Width, int Height) GetPageDimensions(string token, int page = 1)100% ズーム時のデフォルトレンダリングページサイズ — コード内で構築されたアノテーション用の座標空間
IReadOnlyList<string> GetWorksheetNames(string token)スプレッドシートのレンダリングされたワークシート名(ブック順)。他のドキュメントでは空です。

トークンが不明または期限切れの場合は例外がスローされます。

DocOptions

オープンごとの、フォーマットに依存しないオプション(名前空間 Doconut):

TypePropertyDefaultDescription
stringPassword""保護されたドキュメントのパスワード(自動的にフォーマット設定にコピーされます)。
stringWatermark""レンダリングされたページに描画されるカスタム透かしテキスト — 下記参照。
intTimeOut60セッションのスライディング有効期限(分)。
stringBrowserId""Web ファーム:署名済みチケットがバインドされるブラウザー。DoconutFarmBinding.EnsureBrowserId で設定します(Sessions & Security を参照)。
stringUserId""Web ファーム:チケットがバインドされるサインインユーザー、DoconutFarmBinding.ResolveUserId から取得。
intImageResolution0廃止予定。 代わりにフォーマット設定で ImageResolution を設定してください。
boolIsSecuredtrue予約項目;強制はされません。アクセス制御は DoconutOptions.UnsafeMode です。
boolIsWebFarm / string WebFarmPathfalse / ""古典パッケージから移行されたコードのために残されています。これらはファームモードを切り替えません — AddDoconutDistributed が行います。
boolEditModefalse別途配布されるエディタ用に予約されています;false のままにしてください。

Custom watermark

DocOptions.Watermark はチルダで区切られた6つのフィールドを受け取ります。オプションの先頭 ^ は全コーナーレイアウトを要求します:

text
^Text~Color~FontSize~FontName~Opacity~Angle
csharp
string token = await viewer.OpenDocumentAsync(
    path,
    new PdfConfig(),
    new DocOptions
    {
        Watermark = "^Confidential~Red~24~Verdana~80~-45",
        TimeOut = 30
    });
FieldExampleMeaning
Leading ^^オプションの全コーナーレイアウト。これが無い場合は通常の配置が使用されます。
TextConfidential各ページに描画されるテキスト。空であってはなりません。
ColorRed名前付きカラー。
FontSize24フォントサイズ。数値が無効な場合はデフォルトにフォールバックします。
FontNameVerdanaフォントファミリー。サーバーにインストールされている必要があります — Windows Server はデスクトップよりフォントが少ないです。
Opacity800〜255。解析できる必要があります。
Angle-45度単位の回転。数値が無効な場合はデフォルトにフォールバックします。

パーサーはオプションの ^ の後に正確に6つのフィールドがあることを期待します。無効な定義は、静かに消える代わりに目に見える Invalid Watermark テキストに置き換えられます。

License decision

License stateCustom value suppliedRendered result
有効な有料ビューアライセンスなしクリーンページ
有効な有料ビューアライセンスありカスタム透かし
有効な一時/デモライセンスなしクリーンページ
有効な一時/デモライセンスありカスタム透かし
欠如、拒否、期限切れ、バージョン不一致、または無効ドメインのライセンスいずれか評価用透かし;カスタム値は置き換えられません

同じ判断が配信ページとアノテーションエクスポートの両方に適用されます。カスタム透かしはライセンスされたアプリケーションの機能であり、評価用透かしを置き換える手段ではありません。

Annotations API

サーバー側のアノテーション読み込みとエクスポートです。概要は Annotations にあります。

MemberPurpose
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() が返すエンコードされたエンベロープをロード
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 メタデータ

text
Task<DicomMetadata?> GetDicomMetadataAsync(string token, CancellationToken ct = default)

このパッケージでは常に null を返し、ウィジェットのメタデータ要求は 501 Not Implemented で応答します。DICOM タグの読み取りは .NET Framework では利用できません。DICOM レンダリング(ページ、フレーム、アニメーション)は動作します。詳しくは DICOM プラグイン を参照してください。

リソースヘルパー — ReferenceCss / ReferenceScripts

リソースモジュールが DoconutOptions.ResourcesPath 配下で提供するリソースの <link> と <script> タグを依存順に出力します。ライセンスで制御される機能(検索、注釈)のファイルは、ライセンスがそれらを許可している場合にのみ出力されます。

text
string ReferenceCss(CssConfig? config = null)       // null → Bootstrap + viewer + search + annotation
string ReferenceScripts(ScriptConfig? config = null)
bool IsSearchEnabled { get; }                       // ライセンス状態、リボン初期化コードのガード用
bool IsAnnotationEnabled { get; }

CssConfig フラグ: IncludeBootstrapCss, IncludeViewerCss, IncludeSearchCss(検索制御)、IncludeAnnotationCss(注釈制御)。

ScriptConfig フラグ: IncludeJQuery(すべてのスクリプトが必要とする)、IncludeBootstrap, IncludeViewerScripts(コアビューアスクリプト)、IncludeSearchScripts と IncludeSearchBar(検索制御)、IncludeAnnotationScripts と IncludeAnnotationBar(注釈制御)。

どちらも HTML を返します。MVC 5 では @Html.Raw(...) で出力し(コントローラで生成し、ビューには @inject がない)、Web Forms では <%= %> を使用します。 クイックスタート に両方の例があります。

RenderViewer

text
string RenderViewer(string elementId, string token, ViewerConfig? config = null)

elementId を持つ要素上にウィジェットを初期化し、ドキュメントを表示する <script> ブロックを返します。ViewerConfig(デフォルト: BasePath: '/', ResPath: 'doconut-res/images')から構築された docViewer({...}) を呼び出し、続いて .View(token) を実行します。ビューアスクリプトの後に記述してください。生成されたスクリプトはビューアオブジェクトへの参照を保持しないため、独自のツールバーを持つページではウィジェットを手動で初期化する必要があります。詳細は ViewerConfig を参照してください。

Web ファーム

string? AccessToken は、分散モードが有効で UnsafeMode が false の場合に、最新のオープンで発行された署名済みチケットを保持します。単一サーバー構成では null です。ウィジェットへトークンと共に送信します: objViewer.View(token, access)。

このページは役に立ちましたか?