Skip to main content
Linux 版の完全な一覧については、Linux ディストリビューションの開発者向けヘルプを参照してください。主な制限事項の 1 つとして、IEngineLoader を実装するオブジェクトは Linux および macOS では使用できません (Windows 版と Linux 版の ABBYY FineReader Engine 12 の違いを参照) 。

JavaプロジェクトへのFineReader Engineライブラリの追加

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

FineReader Engine のロードとアンロード

静的な Engine クラスを使用して、Engine オブジェクトをロードできます。 Engine クラスには、Engine のロードとアンロードを行う ABBYY FineReader Engine の関数に対応するメソッドが用意されています。
com.abbyy.FREngine-%BUILD_ID%.jar ファイルは自己解凍型アーカイブで、FineReader Engine Java API の初回使用時にお使いのマシン上で展開されます。内容の展開先として使用される既定のフォルダーは Inc/Java です。別のフォルダーを使用する必要がある場合は、上記のいずれかのメソッドで Engine をロードする前に、Engine.SetJNIDllFolder メソッドを呼び出してください。現在アーカイブの展開先として設定されているフォルダーを確認するには、Engine.GetJNIDllFolder を呼び出してください。

エラー処理

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

out-parameter を含むメソッドの呼び出し

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

ごみの収集

FineReader Engine は AutoCloseable インターフェースをサポートしており、オブジェクトに割り当てられたリソースへのアクセスに try 文を使用できます。これにより、try ブロックが終了すると、クローズメソッドを明示的に呼び出さなくても、割り当てられたすべてのリソースが自動的に解放されます。コード内のすべてのオブジェクトに try 文を使用することをお勧めします (以下の例を参照) :

列挙型の使用

列挙定数の組み合わせを受け取るメソッドやプロパティでは、そのメソッドまたはプロパティに int 値を渡す必要があります。列挙定数の int 値を取得するには、すべての列挙型でサポートされている getValue メソッドを使用します。 以下は、PDFPictureCompressionParams オブジェクトの BwPictureFormats プロパティを設定する方法を示すコード例です:

RMI 対応ラッパーの使用

リモートメソッド呼び出し (RMI) をサポートする Java ラッパーの別バージョンが用意されています。すべてのクラスは UnicastRemoteObject を継承して Remote インターフェイスをサポートしており、すべてのメソッドが RemoteException をスローする可能性があります。RMI 対応ラッパーでは、既定で、PDF 処理の呼び出しが初期化済みの PDFium を使用する別スレッドにリダイレクトされます。
RMI 対応ラッパーを使用するには Java Development Kit が必要です。サポートされている Java Development Kit の一覧については、システム要件を参照してください。
com.abbyy.rmi.FREngine パッケージにはクライアントアプリケーションで使用するリモートインターフェイスが含まれており、com.abbyy.rmi.server.FREngine パッケージはサーバー側で使用されます。また、メソッドのオーバーロードに関する制限により、libFREngine.so の代わりに別の動的ライブラリ libFREngine.rmi_server.so も使用する必要があります。 これらのパッケージは、シンプルなクライアントサーバーアプリケーションであれば十分です。ただし、FineReader Engine 自体はスレッドセーフではないため、1 つの Engine インスタンスに同時にアクセスするワーカースレッドが常に 1 つだけになるよう、開発者側で追加の対応を行う必要があります。サーバー側の Engine プールの完全で再利用可能な実装と、それに接続するマルチスレッドクライアントについては、配布パッケージに含まれているコードサンプル (rmiPoolServer および threadPoolClient サンプル、com.abbyy.rmi.pool.FREngine パッケージ、com.abbyy.rmi.pool.impl.FREngine パッケージ) を参照してください。

イベントとコールバックインターフェイスの使用

クライアント側で実装したイベントおよびコールバックインターフェイスは、使用後にRMIランタイムから削除する必要があることに注意してください。