跳轉到主要內容
此方法會開啟指定的影像檔案,並將該檔案對應的頁面新增至文件中。

語法

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

參數

ImageFileName [in] 此變數包含要開啟的影像檔案完整路徑。 PrepareMode [in] 此參數是指 PrepareImageMode 物件,用於指定開啟時要如何預先處理影像。 PageIndices [in] 此參數是指 IntsCollection 物件,用於指定要加入文件的頁面索引。請注意,不允許重複的索引。若要將同一頁加入多次,請多次呼叫此方法。
此參數為選用,也可為 0;在此情況下,已開啟檔案中的所有頁面都會加入文件。

回傳值

這個方法沒有特定的回傳值。它會回傳 ABBYY FineReader Engine 函式的標準回傳值

備註

  • 使用此方法開啟 PDF Portfolio 檔案時,其封面一律會包含在輸出檔案中。
  • 此方法可能會向附加至 FRDocument 物件之 IConnectionPointContainer 介面的監聽器回報事件。
  • 對於 Linux 和 Windows:

範例

這個 Windows 範例示範如何在將頁面新增至文件時,若處理時間過長就中止該作業。
// 當載入影像耗時過久時啟用逾時機制
frDocumentCallback.SetShouldTrackTime( true );
frDocumentCallback.FlushTimer();
// 呼叫 AddImageFile 方法以開啟影像檔案
CheckResult( frDocument->AddImageFile( imageFilePath, 0, pageIndices ) );
// 針對後續處理關閉逾時機制
frDocumentCallback.SetShouldTrackTime( false );
...
// 使用 IFRDocumentEvents 回呼介面來回報事件
class CFRDocumentCallback: public IFRDocumentEvents {
public:
    CFRDocumentCallback() : startTime( 0 ) {}
 
    // 實作 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;
};
// 呼叫 FlushTimer 方法以重設 startTime
void CFRDocumentCallback::FlushTimer() {
    time( &startTime );
}
// 此回呼也可能用於其他方法,因此如果您不想再重設逾時,請將 shouldTrackTime 設為 FALSE 
void CFRDocumentCallback::SetShouldTrackTime( bool _shouldTrackTime ) {
    shouldTrackTime = _shouldTrackTime;
}
 
// 如果目前時間與「startTime」之間的差值超過某個門檻,程序就會中止。AddImageFile 方法會將 0 
傳遞給 OnProgress 方法,而不是 percentage
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;
}
此方法用於 EventsHandlingDocument Comparison 程式碼範例,以及 Windows 的 Document Comparison 示範工具。

另請參閱

FRDocument AddImageFileWithPassword AddImageFileWithPasswordCallback AddImageDocument 處理影像