Passer au contenu principal
Cette rubrique s’applique à FRE pour Windows.
Pour exécuter votre application .NET Core sur différents systèmes d’exploitation et dans des conteneurs, ABBYY FineReader Engine fournit un wrapper .NET Core prêt à l’emploi pour la bibliothèque Engine. Ce wrapper vous permet d’accéder directement à l’API d’ABBYY FineReader Engine, qui est identique sur toutes les plateformes, à quelques exceptions mineures près. Une limitation notable est que les objets implémentant IEngineLoader ne sont pas disponibles sous Linux (voir Differences between ABBYY FineReader Engine 12 for Windows and for Linux pour la liste complète des différences).
Dans cette version, le wrapper .NET Core ne prend pas en charge l’utilisation des objets InprocLoader et OutprocLoader.
Pour utiliser votre application dans des conteneurs, incluez-la avec .NET Core Runtime dans l’image du conteneur. Pour plus d’informations sur le déploiement d’ABBYY FineReader Engine dans un conteneur Docker, voir Running ABBYY FineReader Engine 12 inside a Docker container.

Ajout de la bibliothèque ABBYY FineReader Engine à un projet .NET Core

ABBYY FineReader Engine inclut le fichier FREngine.DotNet.Interop.dll, qui contient le wrapper .NET Core pour FineReader Engine. Vous trouverez ce fichier dans le dossier Bin ou Bin64 du répertoire d’installation. Vous devez ajouter FREngine.DotNet.Interop.dll comme dépendance dans votre projet et le redistribuer avec votre application basée sur ABBYY FineReader Engine.
La seule version de .NET Core prise en charge est la version 6.

Chargement et déchargement d’ABBYY FineReader Engine

Pour initialiser l’objet Engine, définissez le chemin d’accès à FREngine.dll à l’aide de la méthode SetFREnginePath de la classe statique FREngine, puis utilisez la fonction InitializeEngine de cette même classe. Pour décharger l’objet Engine, utilisez la fonction DeinitializeEngine.
// Indiquez le chemin vers ABBYY FineReader Engine Library (freRootPath)
// avant l’initialisation
FREngine.FREngine.SetFREnginePath ( freRootPath );
// Chargement de l’objet Engine
engine = FREngine.FREngine.InitializeEngine( customerProjectId, licensePath, licensePassword, "", "", false );    
...
// Déchargement de l’objet Engine
if ( engine == null )
{
   // Engine n’a pas été chargé
   return;
}
 
engine = null;
GC.Collect();
GC.WaitForPendingFinalizers();
GC.Collect();
 
FREngine.FREngine.DeinitializeEngine();

Ramasse-miettes

Tous les objets du wrapper .NET Core dérivent de l’interface IDisposable, qui est chargée de libérer les ressources allouées aux objets. L’implémentation de cette interface permet la libération automatique de la mémoire lorsqu’un objet n’est plus nécessaire. Il est nécessaire d’utiliser l’instruction using lorsque vous avez fini d’utiliser des objets, en particulier des objets volumineux liés au traitement des documents, à la synthèse ou à l’export, tels que IFRDocument, IFRPages, PDFExportParams, etc. (voir l’exemple ci-dessous) :
using (FREngine.FRDocument document = engineLoader.Engine.CreateFRDocument()) 
{
   try 
   {
     // Ajouter un fichier image à un document
     Console.WriteLine("Loading image...");
     document.AddImageFile(imagePath, null, null);
     ...
     // Enregistrer les résultats au format PDF avec le scénario '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 vous préférez ne pas utiliser l’instruction using, appelez explicitement la méthode Dispose. Exemples Consultez l’exemple de code Hello, qui illustre le fonctionnement d’ABBYY FineReader Engine dans .NET Core.