Zum Hauptinhalt springen
Dieses Thema gilt für FRE für Windows .
Um Ihre .NET Core-Anwendung auf verschiedenen Betriebssystemen und in Containern auszuführen, stellt ABBYY FineReader Engine einen sofort einsatzbereiten .NET Core-Wrapper für die Engine-Bibliothek bereit. Dieser Wrapper ermöglicht Ihnen den direkten Zugriff auf die ABBYY FineReader Engine API, die mit einigen geringfügigen Ausnahmen auf allen Plattformen identisch ist. Eine wesentliche Einschränkung besteht darin, dass Objekte, die IEngineLoader implementieren, unter Linux nicht verfügbar sind (eine vollständige Liste der Unterschiede finden Sie unter Unterschiede zwischen ABBYY FineReader Engine 12 für Windows und Linux).
In diesem Release unterstützt der .NET Core-Wrapper das Arbeiten mit den Objekten InprocLoader und OutprocLoader nicht.
Um Ihre Anwendung in Containern zu verwenden, schließen Sie sie zusammen mit .NET Core Runtime in das Container-Image ein. Weitere Informationen zum Bereitstellen von ABBYY FineReader Engine in einem Docker-Container finden Sie unter Ausführen von ABBYY FineReader Engine 12 in einem Docker-Container.

Hinzufügen der ABBYY FineReader Engine-Bibliothek zu einem .NET Core-Projekt

ABBYY FineReader Engine enthält die Datei FREngine.DotNet.Interop.dll mit dem .NET Core-Wrapper für FineReader Engine. Sie finden diese Datei im Ordner Bin oder Bin64 im Installationsverzeichnis. Sie sollten FREngine.DotNet.Interop.dll zu den Abhängigkeiten Ihres Projekts hinzufügen und zusammen mit Ihrer auf ABBYY FineReader Engine basierenden Anwendung weiterverteilen.
Die einzige unterstützte Version von .NET Core ist 6.

ABBYY FineReader Engine laden und entladen

Um das Engine-Objekt zu initialisieren, legen Sie mit der SetFREnginePath-Methode der statischen FREngine-Klasse den Pfad zu FREngine.dll fest und verwenden anschließend die InitializeEngine-Funktion derselben Klasse. Verwenden Sie zum Entladen des Engine-Objekts die DeinitializeEngine-Funktion.
// Geben Sie vor der Initialisierung
// den Pfad zur ABBYY FineReader Engine-Bibliothek (freRootPath) an
FREngine.FREngine.SetFREnginePath ( freRootPath );
// Laden des Engine-Objekts
engine = FREngine.FREngine.InitializeEngine( customerProjectId, licensePath, licensePassword, "", "", false );    
...
// Entladen des Engine-Objekts
if ( engine == null )
{
   // Engine wurde nicht geladen
   return;
}
 
engine = null;
GC.Collect();
GC.WaitForPendingFinalizers();
GC.Collect();
 
FREngine.FREngine.DeinitializeEngine();

Garbage Collection

Alle Objekte im .NET Core wrapper leiten sich von der IDisposable-Schnittstelle ab, die für die Freigabe der von Objekten belegten Ressourcen zuständig ist. Die Implementierung dieser Schnittstelle stellt sicher, dass nicht mehr benötigte Objekte automatisch von der Garbage Collection erfasst werden. Verwenden Sie zum Freigeben von Objekten die using-Anweisung, insbesondere bei ressourcenintensiven Objekten für die Dokumentverarbeitung, die Synthese oder den Export, wie z. B. IFRDocument, IFRPages, PDFExportParams usw. (siehe folgendes Beispiel):
using (FREngine.FRDocument document = engineLoader.Engine.CreateFRDocument()) 
{
   try 
   {
     // Bilddatei zu einem Dokument hinzufügen
     Console.WriteLine("Bild wird geladen...");
     document.AddImageFile(imagePath, null, null);
     ...
     // Ergebnisse mit dem Szenario 'balanced' als PDF speichern
     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);
     }
   }
}
Wenn Sie die using-Anweisung nicht verwenden möchten, rufen Sie die Methode Dispose explizit auf. Beispiele Siehe das Codebeispiel Hello, das die Funktionsweise von ABBYY FineReader Engine in .NET Core veranschaulicht.