Javaを使用してPDFから画像を抽出する
以下のチュートリアルでは、ホストされたJPedalクラウドAPIを使用してPDFから画像を抽出する方法を説明します。独自のセルフホスト型JPedalマイクロサービス をセットアップすることもできます。
上記のサービスはHTTPリクエストで直接アクセスできますが、このチュートリアルでは、REST API のシンプルなJavaラッパーを提供するオープンソースのJava IDRCloudClient を使用します。
始める前に、最新バージョンのJDK(バージョン8以上)がインストールされていることを確認する必要があります。詳細はJavaのウェブサイト で確認できます。
以下は、PDFから画像を抽出するための基本的なコード例です。設定オプションと高度な機能については、以下をご覧ください。
import java.util.Map;
public final class ExampleUsage {
public static void main(final String[] args) {
final IDRCloudClient client = new IDRCloudClient("https://my-self-hosted-service.com/" + IDRCloudClient.JPEDAL);
final HashMap<String, String> params = new HashMap<>();
params.put("input", IDRCloudClient.UPLOAD);
params.put("file", "path/to/file.pdf");
params.put("settings","{\"mode\":\"extractImages\",\"type\":\"rawImages\",\"format\":\"png\"}");
try {
final Map<String, String> results = client.convert(params);
System.out.println(" --------- ");
System.out.println(results.get("previewUrl"));
IDRCloudClient.downloadResults(results, "path/to/outputDir", "example");
} catch (final ClientException | InterruptedException e) {
e.printStackTrace();
}
}
}
JPedalマイクロサービスは、抽出完了時に抽出のステータス
を送信するためのコールバックURLを受け付けます。コールバックURLを使用することで、抽出が完了したかどうかを判断するためにサービスをポーリングする必要がなくなります。
コールバックURLは以下のようにparamsマップに提供できます。
final HashMap<String, String> params = new HashMap<>();
params.put("input", IDRCloudClient.UPLOAD);
params.put("file", "path/to/file.pdf");
params.put("callbackUrl", "http://listener.url");
params.put("settings","{\"mode\":\"extractImages\",\"type\":\"rawImages\",\"format\":\"png\"}");
JPedal APIは、抽出をカスタマイズするためのキーと値のペアの設定オプションを含む文字列化されたJSONオブジェクトを受け付けます。設定はパラメータ配列に追加する必要があります。PDFから画像を抽出するための設定オプションの完全なリストはこちら で確認できます。
params.put("settings", "{\"key\":\"value\",\"key\":\"value\"}");
ローカルファイルをアップロードする以外に、JPedalマイクロサービスがダウンロードして抽出を実行するURLを提供することもできます。これを行うには、parametersオブジェクト内のinputとfileの値を以下のように置き換えてください。
params.put("input", IDRCloudClient.DOWNLOAD);
params.put("url", "http://exampleURL/exampleFile.pdf");
JPedalマイクロサービスが認証を必要とする場合は、ユーザー名とパスワードを提供する必要があります。これらは以下のように、usernameとpasswordという名前の2つの変数をconvertメソッドに渡すことで提供されます。
params.put("username","yourUsername");
params.put("password","yourPassword");
