JavaでPDFから画像を抽出する
以下のチュートリアルでは、ホストされたJPedal cloud 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 Microserviceは、抽出完了時に抽出のステータス
を送信するコールバック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 Microserviceがダウンロードして抽出を実行するURLを指定することもできます。これを行うには、parametersバリアブルのinputとfileの値を以下に置き換えます。
params.put("input", IDRCloudClient.DOWNLOAD);
params.put("url", "http://exampleURL/exampleFile.pdf");
JPedal Microserviceが認証を必要とする場合は、ユーザー名とパスワードを提供する必要があります。これらは、以下のようにusernameとpasswordという名前の2つのバリアブルをconvertメソッドに渡すことで提供されます。
params.put("username","yourUsername");
params.put("password","yourPassword");
GitHub上のIDRCloudClient
JPedal Microservice API
JPedal Microserviceの使用方法
