Vai al contenuto principale
Questo argomento si applica a FRE per Windows .
Per eseguire l’applicazione .NET Core su diversi sistemi operativi e nei container, ABBYY FineReader Engine mette a disposizione un wrapper .NET Core pronto all’uso per la libreria Engine. Questo wrapper consente di accedere direttamente all’API di ABBYY FineReader Engine, che è la stessa su tutte le piattaforme, con alcune eccezioni minori. Una limitazione significativa è che gli oggetti che implementano IEngineLoader non sono disponibili su Linux (vedi Differenze tra ABBYY FineReader Engine 12 per Windows e per Linux per l’elenco completo delle differenze).
In questa release, il wrapper .NET Core non supporta gli oggetti InprocLoader e OutprocLoader.
Per usare l’applicazione nei container, includila insieme a .NET Core Runtime nell’immagine del container. Per informazioni dettagliate sulla distribuzione di ABBYY FineReader Engine in un container Docker, vedi Eseguire ABBYY FineReader Engine 12 all’interno di un container Docker.

Aggiungere la libreria ABBYY FineReader Engine a un progetto .NET Core

ABBYY FineReader Engine include il file FREngine.DotNet.Interop.dll, che contiene il wrapper .NET Core per FineReader Engine. Questo file si trova nella cartella Bin o Bin64 della directory di installazione. È necessario aggiungere FREngine.DotNet.Interop.dll agli assembly di dipendenza del progetto e ridistribuirlo con l’applicazione basata su ABBYY FineReader Engine.
L’unica versione supportata di .NET Core è la 6.

Caricamento e scaricamento di ABBYY FineReader Engine

Per inizializzare l’oggetto Engine, imposta il percorso di FREngine.dll con il metodo SetFREnginePath della classe statica FREngine, quindi usa la funzione InitializeEngine della stessa classe. Per scaricare l’oggetto Engine, usa la funzione DeinitializeEngine.
// Specificare il percorso di ABBYY FineReader Engine Library (freRootPath)
// prima dell'inizializzazione
FREngine.FREngine.SetFREnginePath ( freRootPath );
// Caricamento dell'oggetto Engine
engine = FREngine.FREngine.InitializeEngine( customerProjectId, licensePath, licensePassword, "", "", false );    
...
// Scaricamento dell'oggetto Engine
if ( engine == null )
{
   // Engine non è stato caricato
   return;
}
 
engine = null;
GC.Collect();
GC.WaitForPendingFinalizers();
GC.Collect();
 
FREngine.FREngine.DeinitializeEngine();

Garbage collection

Tutti gli oggetti del wrapper .NET Core derivano dall’interfaccia IDisposable, responsabile del rilascio delle risorse allocate agli oggetti. L’implementazione di questa interfaccia garantisce la garbage collection automatica quando un oggetto non è più necessario. È necessario usare l’istruzione using quando si ha finito di lavorare con gli oggetti, in particolare con quelli di grandi dimensioni relativi all’elaborazione dei documenti, alla sintesi o all’esportazione, come IFRDocument, IFRPages, PDFExportParams e così via (vedi l’esempio seguente):
using (FREngine.FRDocument document = engineLoader.Engine.CreateFRDocument()) 
{
   try 
   {
     // Aggiunge un file immagine a un documento
     Console.WriteLine("Loading image...");
     document.AddImageFile(imagePath, null, null);
     ...
     // Salva i risultati in PDF usando lo scenario '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);
     }
   }
}
Se preferisci non usare l’istruzione using, richiama esplicitamente il metodo Dispose. Esempi Vedi l’esempio di codice Hello, che illustra il funzionamento di ABBYY FineReader Engine in .NET Core.