ImageFileName[in] Esta variable contiene la ruta de acceso completa al archivo de imagen que se va a abrir.PrepareMode[in] Este parámetro hace referencia al objeto PrepareImageMode, que especifica cómo se preprocesará una imagen durante la apertura.PageIndices[in] Este parámetro hace referencia al objeto IntsCollection, que especifica los índices de las páginas que deben agregarse a un documento. Tenga en cuenta que no se permiten índices repetidos. Para agregar la misma página varias veces, llame a este método varias veces. Este parámetro es opcional y puede ser 0; en ese caso, todas las páginas del archivo abierto se agregarán al documento.
Según el valor de la propiedad IEngine::MultiProcessingParams, ABBYY FineReader Engine puede distribuir la apertura de documentos multipágina entre los núcleos de CPU.
Este ejemplo para Windows muestra cómo abortar la adición de una página a un documento si la operación tarda demasiado.
Código C++ (COM)
// Active el tiempo de espera en caso de que la carga de la imagen tarde demasiadofrDocumentCallback.SetShouldTrackTime( true );frDocumentCallback.FlushTimer();// Llame al método AddImageFile para abrir un archivo de imagenCheckResult( frDocument->AddImageFile( imageFilePath, 0, pageIndices ) );// Desactive el tiempo de espera para el procesamiento posteriorfrDocumentCallback.SetShouldTrackTime( false );...// Use la interfaz de callback IFRDocumentEvents para informar sobre los eventosclass CFRDocumentCallback: public IFRDocumentEvents {public: CFRDocumentCallback() : startTime( 0 ) {} // Implemente los métodos de IUnknown ULONG STDMETHODCALLTYPE AddRef() { return 1; } ULONG STDMETHODCALLTYPE Release() { return 1; } HRESULT STDMETHODCALLTYPE QueryInterface( REFIID riid, void** ppObject ); HRESULT STDMETHODCALLTYPE OnProgress( IFRDocument* document, int percentage, VARIANT_BOOL* ShouldContinue ); HRESULT STDMETHODCALLTYPE OnWarning( IFRDocument* frPage, int pageNumber, BSTR recognizerTip, VARIANT_BOOL* ShouldContinue ); HRESULT STDMETHODCALLTYPE OnPageProcessed( IFRDocument* document, int pageNumber, PageProcessingStageEnum stage ); void FlushTimer(); void SetShouldTrackTime( bool _shouldTrackTime );private: time_t startTime; bool shouldTrackTime = true;};// Llame al método FlushTimer para restablecer startTimevoid CFRDocumentCallback::FlushTimer() { time( &startTime );}// Este callback puede usarse en otros métodos, así que establezca shouldTrackTime en FALSE si ya no quiere restablecer el tiempo de esperavoid CFRDocumentCallback::SetShouldTrackTime( bool _shouldTrackTime ) { shouldTrackTime = _shouldTrackTime;}// Si la diferencia entre la hora actual y "startTime" supera un determinado umbral, se abortará el proceso. El método AddImageFile pasa 0 // en lugar de percentage al método OnProgressHRESULT STDMETHODCALLTYPE CFRDocumentCallback::OnProgress( IFRDocument* frDocument, int percentage, VARIANT_BOOL* shouldTerminate ){ if( shouldTrackTime ) { time_t currentTime; time( ¤tTime ); double seconds = difftime( currentTime, startTime ); printf( "%f\n", seconds ); *shouldTerminate = ( seconds > 100 ? VARIANT_TRUE : VARIANT_FALSE ); } return S_OK;}