跳转到主要内容
此方法已在适用于 Linux 和 Windows 的 FRE 中实现。
此方法在客户端实现。该方法从源的图像处理队列中返回下一个图像文件。
对于 Windows,如果您处理的是已加载到内存中的图像 (例如,使用 Engine 对象的 OpenBitmapOpenDib 方法) ,请实现 GetNextImageDocument
GetNextImageFile 方法的实现可以包含等待下一个图像文件的时间。不过,我们不建议设置过长的等待时间,因为 FineReader Engine 不是多线程的。在等待下一个文件期间,Engine 将无法处理来自识别进程的消息,也无法接收某些页面已处理完毕的通知。如果您确实需要指定较长的等待时间,GetNextImageFile 方法可以返回 0。在这种情况下,Engine 将继续处理来自识别进程的消息并提供已识别的图像,过一段时间后会检查图像队列是否为空。如果队列不为空 (即 IImageSource::IsEmpty 返回 FALSE) ,Engine 将再次调用 GetNextImageFile 方法。但是,如果 GetNextImageFile 方法返回 0,并且没有更多页面需要处理,FineReader Engine 将把控制权返回给用户:IBatchProcessor::GetNextProcessedPage 方法将返回 0。

语法

C++

HRESULT GetNextImageFile( IFileAdapter** Result );

C#

IFileAdapter GetNextImageFile();

Visual Basic .NET

Function GetNextImageFile() As IFileAdapter

参数

Result [out, retval] 指向 IFileAdapter* 指针变量的指针,该变量用于访问队列中的下一个图像文件。

返回值

[仅限 C++] 如果此方法返回的值不是 S_OK,则表示客户端发生了错误。

备注

  • 此方法的客户端实现必须确保:在方法内部抛出的所有异常都会被捕获并妥善处理,且不会传播到方法外部。异常一旦传播到方法外部,可能会导致不可预知的结果 (例如程序终止) 。
  • 如果您的许可证包含 Office Formats Opening 模块,您还可以使用此方法打开采用支持的格式的电子文档。

示例

// 自定义图像源的示例实现,用于维护图像文件队列
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 GetNextImageDocument IsEmpty IFileAdapter