> ## Documentation Index
> Fetch the complete documentation index at: https://docs.abbyy.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Interfaz IFRDocumentEvents

> Interfaz IFRDocumentEvents de la API de ABBYY FineReader Engine — Interfaz de devolución de llamada del lado del cliente para notificar eventos (OnPageProcessed, OnProgress, OnWarning) desde un FRDocument a los receptores.

Esta es una interfaz de devolución de llamada que se utiliza para notificar eventos del objeto [FRDocument](/es/fine-reader/engine/api-reference/document-related-objects/frdocument) a los receptores. Esta interfaz se implementa del lado del cliente. Consulte las recomendaciones detalladas de implementación para su herramienta de desarrollo en [Trabajar con objetos conectables](/es/fine-reader/engine/guided-tour/advanced-techniques/programming-aspects/working-with-connectable-objects). A continuación se ofrece una breve descripción:

* Los usuarios de C++ deberán implementar la interfaz IFRDocumentEvents, obtener un punto de conexión (Windows) y suscribir mediante "advise" el objeto que implementa la interfaz al objeto FRDocument. Como la interfaz se deriva de la interfaz IUnknown, el objeto cliente también debe implementar los métodos de IUnknown.
* Los usuarios de Visual Basic que quieran recibir notificaciones del objeto FRDocument deben declararlo con WithEvents e implementar procedimientos similares a los siguientes:

```csharp theme={null}
Public WithEvents doc As FREngine.FRDocument
Private Sub doc_OnPageProcessed(ByVal sender As FRDocument, _
                                ByVal index As Integer, _
                                ByVal stage As PageProcessingStageEnum)
...
End Sub
```

Un objeto que recibe notificaciones a través de los métodos de esta interfaz puede hacer lo siguiente dentro de la implementación de los métodos:

* Informar del porcentaje completado de carga de imágenes, análisis de documentos, reconocimiento, síntesis y exportación.
* Informar sobre el análisis de documentos, el reconocimiento, la síntesis y la exportación completados.
* En Windows: Procesar los mensajes del sistema para ayudar a evitar que la aplicación parezca no responder durante operaciones prolongadas. Esto puede resultar útil en aplicaciones con interfaz de usuario.

<div id="methods">
  ## Métodos
</div>

| Nombre                                                                                                                    | Descripción                                                                                                                                   |
| ------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------- |
| [OnPageProcessed](/es/fine-reader/engine/api-reference/document-related-objects/ifrdocumentevents/onpageprocessed-method) | Proporciona al cliente información sobre la finalización del procesamiento de la página.                                                      |
| [OnProgress](/es/fine-reader/engine/api-reference/document-related-objects/ifrdocumentevents/onprogress-method)           | Proporciona al cliente información sobre el porcentaje aproximado de la operación actual (carga de imágenes, análisis, reconocimiento, etc.). |
| [OnWarning](/es/fine-reader/engine/api-reference/document-related-objects/ifrdocumentevents/onwarning-method)             | Proporciona al cliente sugerencias y advertencias que se generan durante el procesamiento.                                                    |

<div id="samples">
  ## Ejemplos
</div>

Este ejemplo de C++ para Windows muestra cómo implementar un temporizador que interrumpa el procesamiento si una llamada a un método tarda demasiado.

<Accordion title="Código de C++ (COM)">
  ```cpp theme={null}
  class CFRDocumentCallback: public IFRDocumentEvents {
  public:
      CFRDocumentCallback() : startTime( 0 ) {}
      // Implementa 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* document, 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 startTime
  void CFRDocumentCallback::FlushTimer() {
      time( &startTime );
  }
   
  // Este callback puede usarse en otros métodos, 
  // así que establezca shouldTrackTime en FALSE si ya no desea usar el tiempo de espera
  void CFRDocumentCallback::SetShouldTrackTime( bool _shouldTrackTime ) {
      shouldTrackTime = _shouldTrackTime;
  }
   
  // Si la diferencia entre la hora actual y "startTime" supera un determinado umbral, 
  // el proceso se interrumpirá
  HRESULT 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;
  }
  ```
</Accordion>

Este objeto se utiliza en los siguientes ejemplos de código: [EventsHandling](/es/fine-reader/engine/guided-tour/samples#eventshandling) (Windows y Linux).

<div id="remarks">
  ## Observaciones
</div>

En Linux, esta interfaz no funciona si el objeto Engine se carga como un servidor fuera de proceso.

<div id="see-also">
  ## Consulte también
</div>

[FRDocument](/es/fine-reader/engine/api-reference/document-related-objects/frdocument)

[Trabajar con objetos conectables](/es/fine-reader/engine/guided-tour/advanced-techniques/programming-aspects/working-with-connectable-objects)
