Dieses Thema bezieht sich auf FRE for Windows.
Einbinden der FineReader Engine-Bibliothek in ein Java-Projekt
classpath sowie in den Projekteinstellungen verschiedener Java-Entwicklungsumgebungen angegeben werden. Beispiel:
Laden und Entladen von FineReader Engine
| Funktion | Methode der Klasse Engine | Signatur der Methode der Klasse Engine |
|---|---|---|
| InitializeEngine | InitializeEngine | csharp static public IEngine InitializeEngine( String dllFolder, String customerProjectId, String licensePath, String licensePassword, String dataFolder, String tempFolder, boolean isSharedCPUCoresMode ) throws Exception; |
| DeinitializeEngine | DeinitializeEngine | static public void DeinitializeEngine() throws Exception; |
Beispielcode
Beispielcode
Beispielcode mit InprocLoader
Beispielcode mit InprocLoader
Beispielcode mit OutprocLoader
Beispielcode mit OutprocLoader
| Methode | Signatur | Kommentar |
|---|---|---|
| MarshalInterface | long MarshalInterface(); | Ruft die COM-Funktion CoMarshalInterface auf, um die IEngine-Schnittstelle zu marshalen. Diese Methode sollte in dem Thread aufgerufen werden, in dem die Engine erstellt wurde, damit die Daten verfügbar sind, die zum Erstellen eines Proxy-Objekts in einem anderen Thread benötigt werden. Gibt das Handle für die Marshaling-Daten zurück. |
| UnmarshalInterface | csharp IEngine UnmarshalInterface( long handle ); | Ruft die COM-Funktion CoUnmarshalInterface auf, um das Marshaling der IEngine-Schnittstelle aufzuheben, d. h. ein Proxy-Objekt zu erstellen, mit dem der Client-Prozess auf dieselbe Weise interagieren kann wie mit der Engine selbst. Nimmt das Handle für die Marshaling-Daten (das von der Methode MarshalInterface zurückgegeben wird) als Eingabeparameter entgegen und gibt einen Zeiger auf die IEngine-Schnittstelle zurück. |
Die Datei com.abbyy.FREngine-%BUILD_ID%.jar ist ein selbstentpackendes Archiv, das bei der ersten Verwendung der FineReader Engine Java API auf Ihrem Rechner entpackt wird. Der Standardordner, in den der Inhalt entpackt wird, ist unter Windows Inc\Java. Wenn Sie einen anderen Ordner verwenden möchten, rufen Sie vor dem Laden der Engine mit einer der oben beschriebenen Methoden die Methode Engine.SetJNIDllFolder auf. Um herauszufinden, welcher Ordner derzeit zum Entpacken des Archivs festgelegt ist, rufen Sie die Methode Engine.GetJNIDllFolder auf.
Einsatz von Engine in mehrthreadigen Java-Anwendungen
| Methode | Signatur | Kommentar |
|---|---|---|
| constructor | public EnginesPool( int enginesCount, int waitingEngineTimeout, String customerProjectId, String licensePath, String licensePassword, String dataFolder, String tempFolder, boolean isSharedCPUCoresMode ) throws Exception; | Erstellt einen neuen Pool mit enginesCount Engine-Instanzen. waitingEngineTimeout legt das Timeout für EnginesPool.GetEngine fest. Die übrigen Parameter sind dieselben wie bei InitializeEngine |
| GetEngine | csharp public IEngine GetEngine() throws Exception; | Ruft eine Engine-Instanz aus dem Pool ab. Löst eine Ausnahme aus, wenn waitingEngineTimeout überschritten wird. |
| ReleaseEngine | csharp public void ReleaseEngine( IEngine engine, boolean isRecycleRequired ) throws Exception; | Gibt eine Engine-Instanz an den Pool zurück. Wenn isRecycleRequired den Wert true hat, wird diese Instanz gelöscht und durch eine neue ersetzt (auch wenn das Nutzungslimit noch nicht erreicht ist oder automatisches Recycling deaktiviert ist). |
| SetAutoRecycleUsageCount | public void SetAutoRecycleUsageCount( int value ); | Legt fest, wie oft eine einzelne Engine-Instanz in diesem Pool wiederverwendet werden kann, bevor die Instanz recycelt wird, also gelöscht und automatisch durch eine neue ersetzt wird. Der Wert kann auf 0 gesetzt werden, damit niemals automatisch recycelt wird (nur manuelles Recycling ist dann über ReleaseEngine möglich). Standardwert ist 0 (niemals automatisch recyceln). |
| GetAutoRecycleUsageCount | public int GetAutoRecycleUsageCount(); | Gibt das Wiederverwendungslimit für Engine-Instanzen in diesem Pool zurück. |
| UnloadEngines | public void UnloadEngines() throws Exception; | Entlädt alle Engine-Instanzen und gibt den Pool frei. |
Fehlerbehandlung
- java.lang.OutOfMemoryError
- com.abbyy.FREngine.EngineException
Methoden mit Out-Parametern aufrufen
Ref verwenden, um einen Parameter per Referenz zu übergeben. Siehe die folgenden Beispiele.
Beispiel, in dem die Out-Parameter per Referenz an die Methode IFRPage::FindPageSplitPosition übergeben werden:
Beispielcode für Out-Parameter
Beispielcode für Out-Parameter
Beispielcode für In/Out-Parameter
Beispielcode für In/Out-Parameter
Beispielcode für Array-Out-Parameter
Beispielcode für Array-Out-Parameter
Speicherbereinigung
AutoCloseable-Schnittstelle, sodass Sie die try-Anweisung verwenden können, um mit den für Objekte reservierten Ressourcen zu arbeiten. Das bedeutet, dass nach Erreichen des Endes des try-Blocks alle zugewiesenen Ressourcen automatisch geschlossen werden, ohne dass Schließmethoden explizit aufgerufen werden müssen. Wir empfehlen, die try-Anweisung für alle Objekte in Ihrem Code zu verwenden (siehe Beispiel unten):
Beispielcode
Beispielcode
- die Methoden LoadImageDocFromMemory und OpenImageFileFromMemory des Engine-Objekts
- die von vielen Objekten bereitgestellte Methode LoadFromMemory
- die Methode AddImageFileFromMemory des FRDocument-Objekts
- die Methode AddFromMemory des PDFAttachments-Objekts
Arbeiten mit Aufzählungen
int-Wert an die Methode bzw. Eigenschaft übergeben werden. Um den int-Wert einer Aufzählungskonstante zu ermitteln, verwenden Sie die Methode getValue, die von allen Aufzählungen unterstützt wird.
Hier ist Beispielcode, der zeigt, wie die Eigenschaft BwPictureFormats des Objekts PDFPictureCompressionParams festgelegt wird:
