Saltar al contenido principal
Este tema se aplica a FRE para Windows .
Para ejecutar su aplicación .NET Core en distintos sistemas operativos y contenedores, ABBYY FineReader Engine proporciona un wrapper de .NET Core listo para usar para la biblioteca Engine. Este wrapper le permite acceder directamente a la API de ABBYY FineReader Engine, que es la misma en todas las plataformas, con algunas excepciones menores. Una limitación importante es que los objetos que implementan IEngineLoader no están disponibles en Linux (consulte Differences between ABBYY FineReader Engine 12 for Windows and for Linux para ver la lista completa de diferencias).
En esta versión, el wrapper de .NET Core no admite el uso de los objetos InprocLoader y OutprocLoader.
Para ejecutar su aplicación en contenedores, inclúyala junto con .NET Core Runtime en la imagen del contenedor. Consulte los detalles sobre cómo implementar ABBYY FineReader Engine en un contenedor Docker en Running ABBYY FineReader Engine 12 inside a Docker container.

Agregar la biblioteca ABBYY FineReader Engine a un proyecto de .NET Core

ABBYY FineReader Engine incluye el archivo FREngine.DotNet.Interop.dll, que contiene el wrapper de .NET Core para FineReader Engine. Puede encontrar este archivo en la carpeta Bin o Bin64 de la carpeta de instalación. Debe agregar FREngine.DotNet.Interop.dll a las dependencias de su proyecto y redistribuirlo con su aplicación basada en ABBYY FineReader Engine.
La única versión compatible de .NET Core es la 6.

Carga y descarga de ABBYY FineReader Engine

Para inicializar el objeto Engine, establezca la ruta de acceso a FREngine.dll con el método SetFREnginePath de la clase estática FREngine y, a continuación, use la función InitializeEngine de esa misma clase. Para descargar el objeto Engine, use la función DeinitializeEngine.
// Especifique la ruta de acceso a la biblioteca ABBYY FineReader Engine (freRootPath)
// antes de inicializar
FREngine.FREngine.SetFREnginePath ( freRootPath );
// Carga del objeto Engine
engine = FREngine.FREngine.InitializeEngine( customerProjectId, licensePath, licensePassword, "", "", false );    
...
// Descarga del objeto Engine
if ( engine == null )
{
   // El objeto Engine no se cargó
   return;
}
 
engine = null;
GC.Collect();
GC.WaitForPendingFinalizers();
GC.Collect();
 
FREngine.FREngine.DeinitializeEngine();

Recolección de basura

Todos los objetos del wrapper de .NET Core derivan de la interfaz IDisposable, que se encarga de liberar los recursos asignados a los objetos. Implementar esta interfaz garantiza la recolección automática de basura cuando un objeto ya no es necesario. Es necesario usar la instrucción using al terminar de trabajar con los objetos, especialmente con objetos pesados relacionados con el procesamiento de documentos, la síntesis o la exportación, como IFRDocument, IFRPages, PDFExportParams, etc. (consulte el ejemplo siguiente):
using (FREngine.FRDocument document = engineLoader.Engine.CreateFRDocument()) 
{
   try 
   {
     // Agregar archivo de imagen a un documento
     Console.WriteLine("Loading image...");
     document.AddImageFile(imagePath, null, null);
     ...
     // Guardar resultados en PDF usando el escenario 'balanced'
     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);
     }
   }
}
Si prefiere no usar la instrucción using, llame explícitamente al método Dispose. Ejemplos Consulte el ejemplo de código Hello, que ilustra el funcionamiento de ABBYY FineReader Engine en .NET Core.