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

# Método AddImageFile del objeto FRDocument

> Método AddImageFile del objeto FRDocument en la API de ABBYY FineReader Engine — abre un archivo de imagen y agrega sus páginas al documento.

Este método abre el archivo de imagen especificado y agrega al documento las páginas correspondientes al archivo abierto.

<div id="syntax">
  ## Sintaxis
</div>

<div id="c">
  ### C++
</div>

```cpp theme={null}
HRESULT AddImageFile(
  BSTR               ImageFileName,
  IPrepareImageMode* PrepareMode,
  IIntsCollection*   PageIndices
);
```

### C\#

```csharp theme={null}
void AddImageFile(
  string           ImageFileName,
  IPrepareImageMode PrepareMode,
  IIntsCollection   PageIndices
);
```

<div id="visual-basic-net">
  ### Visual Basic .NET
</div>

```vb theme={null}
Sub AddImageFile( _
  ImageFileName As String, _
  [PrepareMode As IPrepareImageMode = Nothing], _
  [PageIndices As IIntsCollection = Nothing] _
)
```

<div id="parameters">
  ## Parámetros
</div>

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](/es/fine-reader/engine/api-reference/image-related-objects/prepareimagemode), que especifica cómo se preprocesará una imagen durante la apertura.

PageIndices

\[in] Este parámetro hace referencia al objeto [IntsCollection](/es/fine-reader/engine/api-reference/supplementary-objects-and-methods/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.<br />Este parámetro es opcional y puede ser 0; en ese caso, todas las páginas del archivo abierto se agregarán al documento.

<div id="return-values">
  ## Valores de retorno
</div>

Este método no tiene valores de retorno específicos. Devuelve los [valores de retorno estándar de las funciones de ABBYY FineReader Engine](/es/fine-reader/engine/api-reference/return-codes).

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

* Al abrir un archivo PDF Portfolio con este método, su portada siempre se incluye en el archivo de salida.
* Este método puede notificar eventos a los receptores asociados a la interfaz IConnectionPointContainer del objeto [FRDocument](/es/fine-reader/engine/api-reference/document-related-objects/frdocument).
* Para Linux y Windows:
  * Si su licencia incluye el módulo [Apertura de formatos ofimáticos](/es/fine-reader/engine/licensing/modules#officeformatsopening), también puede usar este método para abrir documentos digitales en [formatos compatibles](/es/fine-reader/engine/specifications/supported-digital-document-input-formats).
  * Según el valor de la propiedad [IEngine::MultiProcessingParams](/es/fine-reader/engine/api-reference/engine-object-iengine-interface/properties#multiprocessingparams), ABBYY FineReader Engine puede distribuir la apertura de documentos multipágina entre los núcleos de CPU.

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

Este ejemplo para Windows muestra cómo abortar la adición de una página a un documento si la operación tarda demasiado.

<Accordion title="Código C++ (COM)">
  ```cpp theme={null}
  // Active el tiempo de espera en caso de que la carga de la imagen tarde demasiado
  frDocumentCallback.SetShouldTrackTime( true );
  frDocumentCallback.FlushTimer();
  // Llame al método AddImageFile para abrir un archivo de imagen
  CheckResult( frDocument->AddImageFile( imageFilePath, 0, pageIndices ) );
  // Desactive el tiempo de espera para el procesamiento posterior
  frDocumentCallback.SetShouldTrackTime( false );
  ...
  // Use la interfaz de callback IFRDocumentEvents para informar sobre los eventos
  class 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 startTime
  void 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 espera
  void 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 OnProgress
  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 método se usa en los ejemplos de código [EventsHandling](/es/fine-reader/engine/guided-tour/samples#eventshandling) y [Document Comparison](/es/fine-reader/engine/guided-tour/samples#documentcomparison_linux), así como en la herramienta de demostración de Windows [Document Comparison](/es/fine-reader/engine/guided-tour/samples#documentcomparison).

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

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

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

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

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

[Trabajar con imágenes](/es/fine-reader/engine/guided-tour/advanced-techniques/working-with-images)
