> ## 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.

# Interface IFRDocumentEvents

> Interface IFRDocumentEvents dans l’API ABBYY FineReader Engine — interface de rappel côté client permettant de signaler les événements (OnPageProcessed, OnProgress, OnWarning) d’un FRDocument aux écouteurs.

Il s’agit d’une interface de rappel utilisée pour transmettre les événements de l’objet [FRDocument](/fr/fine-reader/engine/api-reference/document-related-objects/frdocument) aux écouteurs. Cette interface est implémentée côté client. Consultez les conseils d’implémentation détaillés pour votre outil de développement dans [utilisation des objets connectables](/fr/fine-reader/engine/guided-tour/advanced-techniques/programming-aspects/working-with-connectable-objects). Une brève description est donnée ci-dessous :

* Les utilisateurs de C++ devront implémenter l’interface IFRDocumentEvents, obtenir un point de connexion (Windows) et « advise » l’objet implémentant l’interface à l’objet FRDocument. Comme l’interface dérive de l’interface IUnknown, l’objet client doit également implémenter les méthodes d’IUnknown.
* Les utilisateurs de Visual Basic qui souhaitent recevoir des notifications de l’objet FRDocument doivent le déclarer avec WithEvents et implémenter des procédures semblables à celles-ci :

```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 objet recevant des notifications via les méthodes de cette interface peut effectuer les opérations suivantes dans l’implémentation de ces méthodes :

* Signaler le pourcentage de chargement de l’image, d’analyse de documents, de reconnaissance, de synthèse et d’export effectués.
* Signaler des informations sur l’analyse de documents, la reconnaissance, la synthèse et l’export terminés.
* Sous Windows : traiter les messages système afin d’éviter que l’application ne paraisse ne plus répondre pendant les opérations longues. Cela peut être utile dans les applications dotées d’une interface utilisateur.

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

| Nom                                                                                                                       | Description                                                                                                                                        |
| ------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------- |
| [OnPageProcessed](/fr/fine-reader/engine/api-reference/document-related-objects/ifrdocumentevents/onpageprocessed-method) | Fournit au client des informations sur l'achèvement du traitement de la page.                                                                      |
| [OnProgress](/fr/fine-reader/engine/api-reference/document-related-objects/ifrdocumentevents/onprogress-method)           | Fournit au client des informations sur le pourcentage approximatif de l'opération en cours (chargement de l'image, analyse, reconnaissance, etc.). |
| [OnWarning](/fr/fine-reader/engine/api-reference/document-related-objects/ifrdocumentevents/onwarning-method)             | Fournit au client des conseils et des avertissements survenus pendant le traitement.                                                               |

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

Cet exemple C++ pour Windows montre comment implémenter un temporisateur qui interrompt le traitement si un appel de méthode prend trop de temps.

<Accordion title="Code C++ (COM)">
  ```cpp theme={null}
  class CFRDocumentCallback: public IFRDocumentEvents {
  public:
      CFRDocumentCallback() : startTime( 0 ) {}
      // Implémente les méthodes 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;
  };
   
  // Appelez la méthode FlushTimer pour réinitialiser startTime
  void CFRDocumentCallback::FlushTimer() {
      time( &startTime );
  }
   
  // Ce callback peut être utilisé dans d'autres méthodes, 
  // définissez donc shouldTrackTime sur FALSE si vous ne voulez plus utiliser le délai d'expiration
  void CFRDocumentCallback::SetShouldTrackTime( bool _shouldTrackTime ) {
      shouldTrackTime = _shouldTrackTime;
  }
   
  // Si la différence entre l'heure actuelle et "startTime" dépasse un certain seuil, 
  // le traitement sera interrompu
  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>

Cet objet est utilisé dans les exemples de code suivants : [EventsHandling](/fr/fine-reader/engine/guided-tour/samples#eventshandling) (Windows et Linux).

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

Sous Linux, cette interface ne fonctionne pas si l’objet Engine est chargé comme serveur hors processus.

<div id="see-also">
  ## Voir aussi
</div>

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

[Utilisation des objets connectables](/fr/fine-reader/engine/guided-tour/advanced-techniques/programming-aspects/working-with-connectable-objects)
