跳转到主要内容
本主题适用于 Windows 版 FRE。
为了让 .NET Core 应用程序能够在不同的操作系统和容器中运行,ABBYY FineReader Engine 提供了可直接使用的 Engine 库 .NET Core 封装器。通过此封装器,您可以直接访问 ABBYY FineReader Engine API。除少数细微差异外,该 API 在所有平台上都相同。一个明显的限制是,Linux 上不提供实现 IEngineLoader 的对象 (有关完整差异列表,请参阅Windows 版与 Linux 版 ABBYY FineReader Engine 12 的差异) 。
在此版本中,.NET Core 封装器不支持使用 InprocLoaderOutprocLoader 对象。
如果要在容器中使用应用程序,请将应用程序和 .NET Core 运行时一并包含到容器镜像中。有关在 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 封装器。您可以在安装目录的 Bin 或 Bin64 文件夹中找到此文件。您应将 FREngine.DotNet.Interop.dll 添加到项目的依赖项程序集,并随基于 ABBYY FineReader Engine 的应用程序一同重新分发该文件。
唯一受支持的 .NET Core 版本为 6。

加载和卸载 ABBYY FineReader Engine

要初始化 Engine 对象,请先使用静态 FREngine 类的 SetFREnginePath 方法设置 FREngine.dll 的路径,然后调用该类的 InitializeEngine 函数。要卸载 Engine 对象,请使用 DeinitializeEngine 函数。
// 初始化之前,
// 指定 ABBYY FineReader Engine Library (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 语句,尤其是对于与文档处理、合成或导出相关的占用资源较多的对象,例如 IFRDocumentIFRPagesPDFExportParams 等 (请参见下面的示例) :
using (FREngine.FRDocument document = engineLoader.Engine.CreateFRDocument()) 
{
   try 
   {
     // 向文档添加图像文件
     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 中的工作方式。