> ## Documentation Index
> Fetch the complete documentation index at: https://docs.abbyy.com/llms.txt
> Use this file to discover all available pages before exploring further.

# IImageSource インターフェイスの GetNextImageDocument メソッド

> ABBYY FineReader Engine API の IImageSource インターフェイスにある GetNextImageDocument メソッド — このメソッドはクライアント側で実装されます。

<Note>
  このメソッドは、Linux および Windows 版の FRE に実装されています。
</Note>

このメソッドはクライアント側で実装されます。ソースの画像処理キューから次の画像ドキュメントを返します。

<Note>
  Windows では、このメソッドは、すでにメモリに読み込まれている画像を開く場合にのみ使用してください。たとえば、[Engine](/ja/fine-reader/engine/api-reference/engine-object-iengine-interface) オブジェクトの [OpenBitmap](/ja/fine-reader/engine/api-reference/engine-object-iengine-interface/processing-methods/openbitmap-method) メソッドまたは [OpenDib](/ja/fine-reader/engine/api-reference/engine-object-iengine-interface/processing-methods/opendib-method) メソッドを使用する場合です。ディスク上のファイルから画像を取得する場合は、[GetNextImageFile](/ja/fine-reader/engine/api-reference/batch-processor/iimagesource/getnextimagefile-method) を実装してください。
</Note>

GetNextImageDocument メソッドの実装には、次の画像ドキュメントを待機する時間を含めることができます。ただし、FineReader Engine はマルチスレッドではないため、長時間待機する実装は推奨されません。次のドキュメントを待機している間、Engine は認識プロセスからのメッセージを処理できず、ページ処理完了の通知も受け取れません。どうしても長い待機時間を指定する必要がある場合は、GetNextImageDocument メソッドで 0 を返すことができます。この場合、Engine は認識プロセスからのメッセージの処理と認識済み画像の提供を継続し、しばらくしてから画像キューが空かどうかを確認します。キューが空でない場合 (つまり、[IImageSource::IsEmpty](/ja/fine-reader/engine/api-reference/batch-processor/iimagesource/isempty-method) が FALSE を返す場合) 、Engine は GetNextImageDocument メソッドを再度呼び出します。ただし、GetNextImageDocument メソッドが 0 を返し、かつ処理対象のページがもう存在しない場合、FineReader Engine は制御をユーザーに返します。このとき、[IBatchProcessor::GetNextProcessedPage](/ja/fine-reader/engine/api-reference/batch-processor/batchprocessor/getnextprocessedpage-method) メソッドは 0 を返します。

* キュー内のすべての [ImageDocument](/ja/fine-reader/engine/api-reference/image-related-objects/imagedocument) オブジェクトは、処理が終了するまで有効でなければなりません。正しく動作させるには、ImageDocument オブジェクトは [Engine](/ja/fine-reader/engine/api-reference/engine-object-iengine-interface) オブジェクトを介して作成する必要があります。[FRDocument](/ja/fine-reader/engine/api-reference/document-related-objects/frdocument) オブジェクトを介して作成した場合、GetNextImageDocument メソッドの呼び出し中に FRDocument オブジェクトが破棄されるため、エラーが発生することがあります。
* このメソッドはクライアント側で実装されるため、次の制限があります。
  * パスワードで保護されたすべてのファイルは、クライアント側で手動で開く必要があります。
  * [BatchProcessor](/ja/fine-reader/engine/api-reference/batch-processor/batchprocessor) オブジェクトの初期化時に [PrepareImageMode](/ja/fine-reader/engine/api-reference/image-related-objects/prepareimagemode) オブジェクトで指定した属性は、キュー内の ImageDocument オブジェクトには影響しません。

<div id="syntax">
  ## 構文
</div>

<div id="c">
  ### C++
</div>

```cpp theme={null}
HRESULT GetNextImageDocument( IImageDocument** Result );
```

### C\#

```csharp theme={null}
IImageDocument GetNextImageDocument();
```

<div id="visual-basic-net">
  ### Visual Basic .NET
</div>

```vb theme={null}
Function GetNextImageDocument() As IImageDocument
```

<div id="parameters">
  ## パラメーター
</div>

Result

\[out, retval] キュー内の次の画像ドキュメントにアクセスするための、[IImageDocument](/ja/fine-reader/engine/api-reference/image-related-objects/imagedocument)\* へのポインター変数を指すポインターです。

<div id="return-values">
  ## 戻り値
</div>

\[C++のみ] このメソッドが S\_OK 以外の値を返した場合は、クライアント側でエラーが発生したことを示します。

<div id="remarks">
  ## 注記
</div>

このメソッドのクライアント実装では、メソッド内でスローされたすべての例外を確実にキャッチして処理し、いかなる例外もメソッドの外部に伝播しないようにする必要があります。例外がメソッドの外部に伝播すると、予期しない結果 (プログラムの終了など) を招くおそれがあります。

<div id="samples">
  ## サンプル
</div>

<Accordion title="C# コード">
  ```csharp theme={null}
  // 画像ファイルのキューを保持するカスタム画像ソースの実装例
  public class ImageSourceCallback : FREngine.IImageSource
  {
     public ImageSourceCallback( string imageFilesDirectory )
     {
         imageFiles = ImageSourceHelper.LoadFilesNames( imageFilesDirectory );
         nextFileIndex = 0;
     }
     public bool IsEmpty()
     {
         return nextFileIndex >= imageFiles.Length;
     }
     public FREngine.IFileAdapter GetNextImageFile()
     {
         if( !IsEmpty() ) {
             return new FileAdapterCallback( imageFiles[nextFileIndex++] );
         }
         return null;
     }
     public FREngine.IImageDocument GetNextImageDocument()
     {
         ...
     }
     private string[] imageFiles;
     private int nextFileIndex;
  }
  public class FileAdapterCallback : FREngine.IFileAdapter
  {
      ...
  }
  public class ImageSourceHelper
  {
      ...
  }
  ```
</Accordion>

<div id="see-also">
  ## 関連項目
</div>

[IImageSource](/ja/fine-reader/engine/api-reference/batch-processor/iimagesource)

[GetNextImageFile](/ja/fine-reader/engine/api-reference/batch-processor/iimagesource/getnextimagefile-method)

[IsEmpty](/ja/fine-reader/engine/api-reference/batch-processor/iimagesource/isempty-method)

[ImageDocument](/ja/fine-reader/engine/api-reference/image-related-objects/imagedocument)
