메인 콘텐츠로 건너뛰기
이 메서드는 Linux 및 Windows용 FRE에서 구현됩니다.
이 메서드는 클라이언트 측에서 구현됩니다. 이 메서드는 소스의 이미지 처리 큐에서 다음 이미지 문서를 반환합니다.
Windows에서는 이미 메모리에 로드된 이미지를 여는 경우에만 이 메서드를 사용해야 합니다. 예를 들어 엔진 객체의 OpenBitmap 또는 OpenDib 메서드를 사용하는 경우입니다. 디스크의 파일에서 이미지를 가져오는 경우에는 GetNextImageFile을 구현하십시오.
GetNextImageDocument 메서드 구현에는 다음 이미지 문서를 기다리는 시간이 포함될 수 있습니다. 그러나 FineReader Engine은 멀티스레드를 지원하지 않으므로 대기 시간을 길게 구현하는 것은 권장하지 않습니다. 다음 문서를 기다리는 동안 엔진은 인식 프로세스에서 오는 메시지를 처리하거나 페이지 처리 완료 알림을 받을 수 없습니다. 긴 대기 시간을 지정해야 하는 경우 GetNextImageDocument 메서드는 0을 반환할 수 있습니다. 이 경우 엔진은 인식 프로세스의 메시지를 계속 처리하고 인식된 이미지를 계속 제공하며, 잠시 후 이미지 큐가 비어 있는지 확인합니다. 큐가 비어 있지 않으면(즉, IImageSource::IsEmpty가 FALSE를 반환하면) 엔진은 GetNextImageDocument 메서드를 다시 호출합니다. 그러나 GetNextImageDocument 메서드가 0을 반환하고 더 이상 처리할 페이지가 없으면 FineReader Engine은 사용자에게 제어를 반환합니다. 즉, IBatchProcessor::GetNextProcessedPage 메서드는 0을 반환합니다.
  • 큐에 있는 모든 ImageDocument 객체는 처리 종료 시점까지 유효해야 합니다. 올바르게 동작하려면 ImageDocument 객체는 엔진 객체를 통해 생성해야 합니다. 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