Skip to main content
このトピックは FRE for Windows を対象としています。

FineReader Engine ライブラリを Java プロジェクトに追加する

ABBYY FineReader Engine には、FineReader Engine 用の Java クラスライブラリを含む com.abbyy.FREngine-%BUILD_ID%.jar ファイルが含まれています。このファイルは IncJava フォルダーにあります。このファイルのパスは、コマンドラインの classpath パラメーターや、各種 Java 開発環境のプロジェクト設定で指定できます。例:
%JDK% は Java Development Kit のパスです。
サポートされている Java Development Kit の一覧については、System Requirements を参照してください。

FineReader Engine の読み込みと解放

静的な Engine クラスを使用して、Engine オブジェクトを読み込むことができます。 Engine クラスには、Engine の読み込みと解放を行う ABBYY FineReader Engine の関数に対応するメソッドが用意されています。
COM を使用して Engine を読み込むには、GetEngineInprocLoader または GetEngineOutprocLoader メソッドを使用します。詳細については、IEngineLoader インターフェイスの説明を参照してください。読み込みに GetEngineOutprocLoader メソッドを使用する場合、親プロセスは自動的に設定されるため、IHostProcessControl::SetClientProcessId メソッドを呼び出す必要はありません。
アプリケーションを Windows 上で開発し、Linux 上で実行する予定がある場合は、Engine の読み込みにこれらのメソッドを使用しないでください。上記で説明した InitializeEngine メソッドのみを使用してください。この制限は、IEngineLoader を実装するオブジェクトを Linux では使用できないためです。
Engine ローダー経由で作成された Engine object を操作するために、Engine クラスには、対応する COM 関数を呼び出してスレッド間で インターフェイス pointer をマーシャリングするメソッドが用意されています。
com.abbyy.FREngine-%BUILD_ID%.jar ファイルは自己展開型アーカイブで、FineReader Engine Java API を初めて使用する際に、お使いのマシン上で展開されます。内容の展開先となる既定のフォルダーは、Windows では Inc\Java です。別のフォルダーを使用する必要がある場合は、上記で説明したいずれかの方法で Engine をロードする前に、Engine.SetJNIDllFolder メソッドを呼び出してください。現在アーカイブの展開先として設定されているフォルダーを確認するには、Engine.GetJNIDllFolder を呼び出してください。

マルチスレッドの Java アプリケーションで Engine を使用する

マルチスレッドの Java アプリケーションでは、EnginesPool クラスを使用できます。このクラスは、FineReader Engine オブジェクトのプールを作成および管理するための包括的なソリューションを提供します。java.lang.Runnable インターフェイスを実装しています。
EnginesPool クラスのメソッドを以下に示します。 EnginesPool クラスの使用例については、EnginesPool のコードサンプルを参照してください。

エラー処理

ABBYY FineReader Engine では、次の型の例外がスローされることがあります。
  • java.lang.OutOfMemoryError
  • com.abbyy.FREngine.EngineException
com.abbyy.FREngine.EngineException 例外は java.lang.Exception を継承しており、追加のメソッド int getHResult を 1 つ持っています。このメソッドは、発生したエラーの HRESULT コードを返します。この型の例外では、getMessage() メソッドを使用してエラーメッセージを取得できるだけでなく、エラーコードも取得できます。

outパラメーターを持つメソッドの呼び出し

ABBYY FineReader Engine API には、メソッドの呼び出し後に新しい値を受け取り、参照渡しで渡す必要がある outパラメーターを持つメソッドがいくつかあります。これらのパラメーターは、型ライブラリおよびこの開発者向けヘルプのメソッド説明で [out] または [in, out] として示されています。 Java で ABBYY FineReader Engine を使用する場合、パラメーターを参照渡しするには、専用の Ref クラスを使用する必要があります。以下の例を参照してください。 次の例では、outパラメーターを IFRPage::FindPageSplitPosition メソッドに参照渡ししています。
次の例では、in/outパラメーターを ICoordinatesConverter::ConvertCoordinates メソッドに参照渡ししています。
次の例では、配列の outパラメーターを IPlainText::GetCharacterData メソッドに参照渡しする方法を示しています。

リソースの解放

FineReader Engine は AutoCloseable インターフェイスに対応しており、try 文を使用してオブジェクトに割り当てられたリソースを扱うことができます。これにより、try ブロックを抜けると、クローズ用のメソッドを明示的に呼び出さなくても、割り当てられたすべてのリソースが自動的に閉じられます。コード内のすべてのオブジェクトで try 文を使用することをお勧めします (以下の例を参照) 。
HGLOBAL の取り扱い ABBYY FineReader Engine API の一部のメソッドは、入力パラメーターとしてメモリ ブロックへの HGLOBAL ハンドル (__int64 として渡されます) を受け取ります。HGLOBAL は Windows 固有のため、Java ラッパーでは、これらのメソッドは代わりにメモリ ブロックの内容を byte[] として受け取ります。該当するメソッドは次のとおりです。 一方、Handle オブジェクトを返すメソッドは、Java ラッパーでもそのまま返されます。

列挙型の扱い

列挙定数の組み合わせを受け取るメソッドおよびプロパティでは、int 値をメソッドまたはプロパティに渡す必要があります。列挙定数の int 値を取得するには、すべての列挙型でサポートされている getValue メソッドを使用します。 以下は、PDFPictureCompressionParams オブジェクトの BwPictureFormats プロパティを設定する方法を示すサンプルコードです。
関連項目 Engine Object のさまざまな読み込み方法 (Windows 向け) Java でのクロスプラットフォーム開発 (Windows 向け)