跳轉到主要內容
本主題適用於 Windows 版 FRE。
為了在不同作業系統和容器中執行 .NET Core 應用程式,ABBYY FineReader Engine 提供了現成可用的 .NET Core Engine 程式庫包裝器。此包裝器可讓您直接存取 ABBYY FineReader Engine API,該 API 在所有平台上基本一致,僅有少數例外。其中一項值得注意的限制是,實作 IEngineLoader 的物件在 Linux 上不可用 (完整差異清單請參閱 ABBYY FineReader Engine 12 Windows 版與 Linux 版之間的差異) 。
在此版本中,.NET Core 包裝器不支援使用 InprocLoaderOutprocLoader 物件。
若要在容器中執行應用程式,請將應用程式連同 .NET Core Runtime 一併納入容器映像中。如需在 Docker 容器中部署 ABBYY FineReader Engine 的詳細資訊,請參閱在 Docker 容器內執行 ABBYY FineReader Engine 12

將 ABBYY FineReader Engine 程式庫新增至 .NET Core 專案

ABBYY FineReader Engine 包含 FREngine.DotNet.Interop.dll 檔案,其中提供 FineReader Engine 的 .NET Core 包裝器。您可以在安裝資料夾中的 BinBin64 資料夾找到此檔案。您應將 FREngine.DotNet.Interop.dll 新增至專案的相依組件,並隨以 ABBYY FineReader Engine 為基礎的應用程式一併轉散發。
唯一受支援的 .NET Core 版本為 6。

載入與解除載入 ABBYY FineReader Engine

若要初始化 Engine 物件,請先使用靜態 FREngine 類別的 SetFREnginePath 方法設定 FREngine.dll 的路徑,然後再使用同一個類別的 InitializeEngine 函式。若要解除載入 Engine 物件,請使用 DeinitializeEngine 函式。
// 初始化之前,先指定
// ABBYY FineReader Engine 程式庫 (freRootPath) 的路徑
FREngine.FREngine.SetFREnginePath ( freRootPath );
// 載入 Engine 物件
engine = FREngine.FREngine.InitializeEngine( customerProjectId, licensePath, licensePassword, "", "", false );    
...
// 解除載入 Engine 物件
if ( engine == null )
{
   // Engine 尚未載入
   return;
}
 
engine = null;
GC.Collect();
GC.WaitForPendingFinalizers();
GC.Collect();
 
FREngine.FREngine.DeinitializeEngine();

垃圾回收

.NET Core 包裝器中的所有物件均衍生自 IDisposable 介面,該介面負責釋放為物件配置的資源。實作此介面可確保在物件不再需要時自動執行垃圾回收。必須使用 using 陳述式來完成物件的使用,尤其是與文件處理、synthesis 或匯出相關的大型物件,例如 IFRDocumentIFRPagesPDFExportParams 等 (請參閱以下範例) :
using (FREngine.FRDocument document = engineLoader.Engine.CreateFRDocument()) 
{
   try 
   {
     // 將 image file 加入文件
     Console.WriteLine("Loading image...");
     document.AddImageFile(imagePath, null, null);
     ...
     // 使用「balanced」情境將結果儲存為 PDF
     using (FREngine.PDFExportParams pdfParams = engineLoader.Engine.CreatePDFExportParams()) 
     {
       pdfParams.Scenario = FREngine.PDFExportScenarioEnum.PES_Balanced;
       document.Export(Path.Combine(FreConfig.GetSamplesFolder(), @"SampleImages\Demo.pdf"),
       FREngine.FileExportFormatEnum.FEF_PDF, pdfParams);
     }
   }
}
如果您不想使用 using 陳述式,請明確呼叫 Dispose 方法。 範例 請參閱 Hello 程式碼範例,該範例示範 ABBYY FineReader Engine 在 .NET Core 中的運作方式。