此方法已在 Linux 和 Windows 版 FRE 中實作。
此方法是在用戶端實作。它會從來源的影像處理佇列中傳回下一個影像檔案。
GetNextImageFile 方法的實作可以包含等待下一個影像檔案的時間。不過,我們不建議設定過長的等待時間,因為 FineReader Engine 並非多執行緒。在等待下一個檔案時,Engine 將無法處理來自辨識程序的訊息,也無法接收某些頁面已完成處理的通知。如果您確實需要指定較長的等待時間,GetNextImageFile 方法可以傳回 0。在此情況下,Engine 會繼續處理來自辨識程序的訊息、提供已辨識的影像,並在稍後檢查影像佇列是否為空。如果佇列不是空的 (亦即 IImageSource::IsEmpty 傳回 FALSE) ,Engine 會再次呼叫 GetNextImageFile 方法。不過,如果 GetNextImageFile 方法傳回 0,且已沒有更多頁面可供處理,FineReader Engine 就會將控制權交還給使用者:IBatchProcessor::GetNextProcessedPage 方法將傳回 0。
HRESULT GetNextImageFile( IFileAdapter** Result );
IFileAdapter GetNextImageFile();
Function GetNextImageFile() As IFileAdapter
Result
[out, retval] 指向 IFileAdapter* 指標變數的指標,可用來存取佇列中的下一個影像檔案。
[僅限 C++] 如果此方法回傳的值不是 S_OK,則表示用戶端發生了錯誤。
- 此方法的用戶端實作必須確保,方法內擲出的所有例外狀況都會被捕捉並妥善處理,且不會外拋到方法之外。若例外狀況外拋到方法之外,可能會導致不可預期的結果 (例如程式終止) 。
- 如果您的授權包含 Office 格式開啟 模組,您也可以使用此方法來開啟採用支援格式的數位文件。
// 自訂影像來源的範例實作,會維護影像檔案佇列
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