Zum Hauptinhalt springen
Diese Methode öffnet eine angegebene Bilddatei und fügt die Seiten der geöffneten Datei einem Dokument hinzu.

Syntax

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] _
)

Parameter

ImageFileName [in] Diese Variable enthält den vollständigen Pfad zur zu öffnenden Bilddatei. PrepareMode [in] Dieser Parameter verweist auf das Objekt PrepareImageMode, das angibt, wie ein Bild beim Öffnen vorverarbeitet wird. PageIndices [in] Dieser Parameter verweist auf das Objekt IntsCollection, das die Indizes der Seiten angibt, die einem Dokument hinzugefügt werden sollen. Beachten Sie, dass doppelte Indizes nicht zulässig sind. Um dieselbe Seite mehrfach hinzuzufügen, rufen Sie diese Methode bitte mehrmals auf.
Dieser Parameter ist optional und kann 0 sein; in diesem Fall werden alle Seiten der geöffneten Datei dem Dokument hinzugefügt.

Rückgabewerte

Diese Methode hat keine spezifischen Rückgabewerte. Sie gibt die Standardrückgabewerte von ABBYY FineReader Engine-Funktionen zurück.

Bemerkungen

  • Wenn Sie mit dieser Methode eine PDF Portfolio-Datei öffnen, wird deren Titelseite immer in die Ausgabedatei aufgenommen.
  • Diese Methode kann Ereignisse an die Listener weiterleiten, die mit der IConnectionPointContainer-Schnittstelle des FRDocument-Objekts verbunden sind.
  • Für Linux und Windows:

Beispiele

Dieses Windows-Beispiel zeigt, wie das Hinzufügen einer Seite zu einem Dokument abgebrochen werden kann, wenn der Vorgang zu lange dauert.
// Aktivieren Sie das Timeout für den Fall, dass das Laden des Bildes zu lange dauert
frDocumentCallback.SetShouldTrackTime( true );
frDocumentCallback.FlushTimer();
// Rufen Sie die Methode AddImageFile auf, um eine Bilddatei zu öffnen
CheckResult( frDocument->AddImageFile( imageFilePath, 0, pageIndices ) );
// Deaktivieren Sie das Timeout für die anschließende Verarbeitung
frDocumentCallback.SetShouldTrackTime( false );
...
// Verwenden Sie die Callback-Schnittstelle IFRDocumentEvents, um Ereignisse zu melden
class CFRDocumentCallback: public IFRDocumentEvents {
public:
    CFRDocumentCallback() : startTime( 0 ) {}
 
    // Implementieren Sie die IUnknown-Methoden
    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;
};
// Rufen Sie die Methode FlushTimer auf, um startTime zurückzusetzen
void CFRDocumentCallback::FlushTimer() {
    time( &startTime );
}
// Dieser Callback kann auch in anderen Methoden verwendet werden. Setzen Sie shouldTrackTime daher auf FALSE, wenn Sie das Timeout nicht mehr zurücksetzen möchten 
void CFRDocumentCallback::SetShouldTrackTime( bool _shouldTrackTime ) {
    shouldTrackTime = _shouldTrackTime;
}
 
// Wenn die Differenz zwischen der aktuellen Zeit und "startTime" einen bestimmten Schwellenwert überschreitet, wird der Vorgang abgebrochen. Die Methode AddImageFile übergibt 0 
anstelle von percentage an die Methode 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;
}
Diese Methode wird in den Codebeispielen EventsHandling und Document Comparison sowie im Windows-Demotool Document Comparison verwendet.

Siehe auch

FRDocument AddImageFileWithPassword AddImageFileWithPasswordCallback AddImageDocument Arbeiten mit Bildern