LoadFromRangeSource
ドキュメント管理、パフォーマンス
説明
同期ランダムアクセスコールバックを通じてPDFを読み込んで選択します。HTTPクライアント、データベース、オブジェクトストア、カスタムストレージプロバイダが、パーサーが触れるバイト範囲だけを供給できます
構文
Delphi
Function TPDFlib.LoadFromRangeSource(SourceSize: Int64;
ReadCallback: TPDFlibRangeReadEvent; Const Password: WideString;
ChunkSize: LongInt= 0; CacheLimitBytes: Int64= 0;
CoalesceWindowMS: Cardinal= PDF_NET_DEFAULT_COALESCE_WINDOW_MS;
AvailabilityCallback: TPDFlibRangeAvailabilityEvent= Nil): Integer;パラメータ
| SourceSize | 正とするソース合計サイズ(バイト)です |
|---|---|
| ReadCallback | 絶対ソースオフセットに対してバイトをコピーするコールバックです |
| Password | PDFを開くために使うパスワードです。暗号化されていないドキュメントでは空文字列です |
| ChunkSize | 整列されたレンジフェッチの粒度です。0を指定すると64 KiBの既定値が選択され、4096未満の値も既定値を使用します |
| CacheLimitBytes | 最も使われていないウィンドウから順に退去させながら保持されるバイトの上限です。0を指定すると4 MiBの既定値が選択され、1チャンク未満の値は1チャンクに引き上げられます |
| CoalesceWindowMS | 各絶対読み取りの最初の未キャッシュチャンクに対する収集ウィンドウです。既定は2ミリ秒で、0を指定すると初期遅延が無効になります |
| AvailabilityCallback | プログレッシブストレージに既に存在するバイト範囲を検査する、省略可能な非フェッチテストです |
戻り値
| 0 | ソース引数が無効だったか、PDFを読み込めませんでした。LastErrorCodeを確認してください |
|---|---|
| 1 | ドキュメントが読み込まれ、選択されました |
備考
読み込みコールバックは絶対の0始まりオフセットを受け取り、Countバイトを超えてBufferへ書き込んではならず、書き込んだバイト数を返します
ページのレンダリング、抽出、保存が後から追加の範囲を要求できるため、コールバックターゲットとその裏付け保存領域は、読み込まれたドキュメントが閉じられるまで有効でなければなりません
呼び出しは同期で、順序不同で到達することがあります。ソースの物理的な終端では短い結果が受け入れられ、予期しないゼロの結果は読み込みや現在の遅延操作を失敗させます
AvailabilityCallbackが割り当てられている場合、転送やブロッキングI/Oなしで要求された範囲全体を直ちに読める場合にのみ非ゼロを返してください
キャッシュされた範囲はコールバック結果にかかわらず利用可能です。Nilのコールバックは、すべての有効なソース範囲を利用可能として扱うことで同期動作を保ちます
整列されたチャンクは重なる読み込みでの重複転送を避け、バイト予算はドキュメントサイズとは無関係に保持ペイロードを制限します
遅延オブジェクト読み込みとセグメント読み込みは絶対オフセットを使うため、並行処理は同じチャンクの要求を共有し、隣接するキューチャンクを、位置指定ストリームカーソルを変えずに統合します
ソースコールバックは直列化され、同じレンジストリームから再帰的に読んではなりません
欠落と報告された範囲を読まずにページ、フォーム、間接オブジェクトの依存を試すにはGetRangeSourceDataAvailabilityを使用します
アクティブなキャッシュの観察や変更には、GetRangeSourceCacheInfo、SetRangeSourceCacheLimit、ClearRangeSourceCacheを使用します
ライブラリは内部のシーク可能なレンジストリームを所有しますが、コールバックターゲットやその裏付け保存領域は所有しません