Pular para o conteúdo principal
Este método abre um arquivo de imagem especificado e adiciona ao documento as páginas correspondentes ao arquivo aberto.

Sintaxe

C++

HRESULT AddImageFile(
  BSTR               ImageFileName,
  IPrepareImageMode* PrepareMode,
  IIntsCollection*   PageIndices
);

C#

void AddImageFile(
  string           ImageFileName,
  IPrepareImageMode PrepareMode,
  IIntsCollection   PageIndices
);

Visual Basic .NET

Sub AddImageFile( _
  ImageFileName As String, _
  [PrepareMode As IPrepareImageMode = Nothing], _
  [PageIndices As IIntsCollection = Nothing] _
)

Parâmetros

ImageFileName [in] Esta variável contém o caminho completo do arquivo de imagem a ser aberto. PrepareMode [in] Este parâmetro se refere ao objeto PrepareImageMode, que especifica como a imagem será pré-processada durante a abertura. PageIndices [in] Este parâmetro se refere ao objeto IntsCollection, que especifica os índices das páginas que devem ser adicionadas a um documento. Observe que índices repetidos não são permitidos. Para adicionar a mesma página várias vezes, chame este método várias vezes.
Este parâmetro é opcional e pode ser 0; nesse caso, todas as páginas do arquivo aberto serão adicionadas ao documento.

Valores de retorno

Este método não tem valores de retorno específicos. Ele retorna os valores de retorno padrão das funções do ABBYY FineReader Engine.

Observações

  • Ao abrir um arquivo PDF Portfolio usando este método, a capa dele é sempre incluída no arquivo de saída.
  • Este método pode disparar eventos para os listeners anexados à interface IConnectionPointContainer do objeto FRDocument.
  • Para Linux e Windows:

Exemplos

Este exemplo para Windows mostra como interromper a adição de uma página ao documento caso essa operação demore demais.
// Ative o tempo limite caso o carregamento da imagem demore demais
frDocumentCallback.SetShouldTrackTime( true );
frDocumentCallback.FlushTimer();
// Chame o método AddImageFile para abrir um arquivo de imagem
CheckResult( frDocument->AddImageFile( imageFilePath, 0, pageIndices ) );
// Desative o tempo limite para o processamento seguinte
frDocumentCallback.SetShouldTrackTime( false );
...
// Use a interface de callback IFRDocumentEvents para relatar eventos
class CFRDocumentCallback: public IFRDocumentEvents {
public:
    CFRDocumentCallback() : startTime( 0 ) {}
 
    // Implemente os métodos 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;
};
// Chame o método FlushTimer para redefinir startTime
void CFRDocumentCallback::FlushTimer() {
    time( &startTime );
}
// Esse callback pode ser usado em outros métodos, portanto defina shouldTrackTime como FALSE se não quiser mais reiniciar o tempo limite 
void CFRDocumentCallback::SetShouldTrackTime( bool _shouldTrackTime ) {
    shouldTrackTime = _shouldTrackTime;
}
 
// Se a diferença entre a hora atual e "startTime" exceder um determinado limite, o processo será interrompido. O método AddImageFile passa 0 
em vez de percentage para o 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;
}
Esse método é usado nos exemplos de código EventsHandling e Comparação de documentos, bem como na ferramenta de demonstração do Windows Comparação de documentos.

Veja também

FRDocument AddImageFileWithPassword AddImageFileWithPasswordCallback AddImageDocument Trabalhando com imagens