メインコンテンツへスキップ
このメソッドは、Linux および Windows 版の FRE に実装されています。
このメソッドはクライアント側で実装されます。ソースの画像処理キューから次の画像ドキュメントを返します。
Windows では、このメソッドは、すでにメモリに読み込まれている画像を開く場合にのみ使用してください。たとえば、Engine オブジェクトの OpenBitmap メソッドまたは OpenDib メソッドを使用する場合です。ディスク上のファイルから画像を取得する場合は、GetNextImageFile を実装してください。
GetNextImageDocument メソッドの実装には、次の画像ドキュメントを待機する時間を含めることができます。ただし、FineReader Engine はマルチスレッドではないため、長時間待機する実装は推奨されません。次のドキュメントを待機している間、Engine は認識プロセスからのメッセージを処理できず、ページ処理完了の通知も受け取れません。どうしても長い待機時間を指定する必要がある場合は、GetNextImageDocument メソッドで 0 を返すことができます。この場合、Engine は認識プロセスからのメッセージの処理と認識済み画像の提供を継続し、しばらくしてから画像キューが空かどうかを確認します。キューが空でない場合 (つまり、IImageSource::IsEmpty が FALSE を返す場合) 、Engine は GetNextImageDocument メソッドを再度呼び出します。ただし、GetNextImageDocument メソッドが 0 を返し、かつ処理対象のページがもう存在しない場合、FineReader Engine は制御をユーザーに返します。このとき、IBatchProcessor::GetNextProcessedPage メソッドは 0 を返します。
  • キュー内のすべての ImageDocument オブジェクトは、処理が終了するまで有効でなければなりません。正しく動作させるには、ImageDocument オブジェクトは Engine オブジェクトを介して作成する必要があります。FRDocument オブジェクトを介して作成した場合、GetNextImageDocument メソッドの呼び出し中に FRDocument オブジェクトが破棄されるため、エラーが発生することがあります。
  • このメソッドはクライアント側で実装されるため、次の制限があります。
    • パスワードで保護されたすべてのファイルは、クライアント側で手動で開く必要があります。
    • BatchProcessor オブジェクトの初期化時に PrepareImageMode オブジェクトで指定した属性は、キュー内の ImageDocument オブジェクトには影響しません。

構文

C++

HRESULT GetNextImageDocument( IImageDocument** Result );

C#

IImageDocument GetNextImageDocument();

Visual Basic .NET

Function GetNextImageDocument() As IImageDocument

パラメーター

Result [out, retval] キュー内の次の画像ドキュメントにアクセスするための、IImageDocument* へのポインター変数を指すポインターです。

戻り値

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

注記

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

サンプル

// 画像ファイルのキューを保持するカスタム画像ソースの実装例
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
{
    ...
}

関連項目

IImageSource GetNextImageFile IsEmpty ImageDocument