PDF ファイルから画像を抽出することは、ドキュメント処理パイプラインを構築する際に頻繁に求められる要件です。特にサムネイル、レポート、またはさらなる分析のためにグラフィックを再利用する必要がある場合に重要です。GroupDocs.Parser Cloud SDK for Java は、数行のコードだけで PDF から埋め込まれたすべての画像を取得できるシンプルな API を提供します。本ガイドでは、SDK の設定方法、完全なコード例の実行、同じタスクを cURL で実行する方法、そして信頼性の高い PDF 画像抽出を実現するベストプラクティスについて解説します。
JavaでPDFドキュメントから画像を抽出する5つのステップ
- API資格情報を構成する:
Configurationオブジェクトを作成し、クライアント ID とシークレットを設定します。
Configuration config = new Configuration();
config.setClientId("YOUR_CLIENT_ID");
config.setClientSecret("YOUR_CLIENT_SECRET");
- Parser API の初期化: 構成を使用して
ApiClientを作成し、ParserApiをインスタンス化します。
ApiClient apiClient = new ApiClient(config);
ParserApi parserApi = new ParserApi(apiClient);
- 画像抽出リクエストを作成:
FileInfoを使用して PDF ファイルパスを指定し、ExtractImagesRequestを作成します。
String inputFilePath = "input.pdf";
ExtractImagesRequest request = new ExtractImagesRequest()
.setFileInfo(new FileInfo().setFilePath(inputFilePath));
- 抽出を実行し、画像を取得する:
extractImagesを呼び出し、Imageオブジェクトのリストを取得します。
ImagesResult imagesResult = parserApi.extractImages(request);
List<Image> images = imagesResult.getImages();
- 各画像をローカルストレージに保存: コレクションをループし、バイナリデータを書き込んでファイルに保存します。
for (int i = 0; i < images.size(); i++) {
Image img = images.get(i);
String outputFileName = "extracted_image_" + (i + 1) + "_" + img.getFileName();
try (FileOutputStream fos = new FileOutputStream(outputFileName)) {
fos.write(img.getData());
}
System.out.println("Saved image: " + outputFileName);
}
各クラスの詳細については、公式 API リファレンス を参照してください。
完全なコード例: JavaでGroupDocs.Parserを使用してPDFドキュメントから画像を抽出する
次の例は、認証情報の設定から画像の保存までのフルワークフローを示しています。
import com.groupdocs.parser.cloud.ApiClient;
import com.groupdocs.parser.cloud.Configuration;
import com.groupdocs.parser.cloud.api.ParserApi;
import com.groupdocs.parser.cloud.model.FileInfo;
import com.groupdocs.parser.cloud.model.Image;
import com.groupdocs.parser.cloud.model.ImagesResult;
import com.groupdocs.parser.cloud.model.requests.ExtractImagesRequest;
import java.io.FileOutputStream;
import java.util.List;
public class ExtractImagesFromPdf {
public static void main(String[] args) {
// Configure API credentials
Configuration config = new Configuration();
config.setClientId("YOUR_CLIENT_ID");
config.setClientSecret("YOUR_CLIENT_SECRET");
// config.setBaseUrl("https://api.groupdocs.cloud"); // optional, if needed
// Initialize API client and Parser API
ApiClient apiClient = new ApiClient(config);
ParserApi parserApi = new ParserApi(apiClient);
// Path to the PDF file stored in GroupDocs Cloud storage
String inputFilePath = "input.pdf";
// Build request for image extraction
ExtractImagesRequest request = new ExtractImagesRequest()
.setFileInfo(new FileInfo().setFilePath(inputFilePath));
try {
// Perform extraction
ImagesResult imagesResult = parserApi.extractImages(request);
List<Image> images = imagesResult.getImages();
// Save each extracted image to local disk
for (int i = 0; i < images.size(); i++) {
Image img = images.get(i);
String outputFileName = "extracted_image_" + (i + 1) + "_" + img.getFileName();
try (FileOutputStream fos = new FileOutputStream(outputFileName)) {
fos.write(img.getData());
}
System.out.println("Saved image: " + outputFileName);
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
注意: このコード例はコア機能を示しています。プロジェクトで使用する前に、ファイルパスや設定値を実際の環境に合わせて更新し、必要な依存関係がすべて正しくインストールされていることを確認し、開発環境で徹底的にテストしてください。問題が発生した場合は、公式ドキュメントをご参照いただくか、サポートチームにお問い合わせください。
cURL と REST API を使用した PDF 画像抽出
Javaコードを書かずに、GroupDocs.Parser Cloud の REST エンドポイントを直接呼び出すことで、同じ結果を得ることができます。
- アクセストークンを取得する
curl -X POST "https://api.groupdocs.cloud/v2.0/connect/token" \
-H "Content-Type: application/x-www-form-urlencoded" \
-d "grant_type=client_credentials&client_id=YOUR_CLIENT_ID&client_secret=YOUR_CLIENT_SECRET"
- PDF ファイルをアップロード
curl -X POST "https://api.groupdocs.cloud/v2.0/storage/file/upload?path=input.pdf" \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
-F "file=@/path/to/input.pdf"
- 画像抽出のリクエスト
curl -X POST "https://api.groupdocs.cloud/v2.0/parser/extractImages" \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{"fileInfo": {"filePath": "input.pdf"}}'
- 抽出された画像をダウンロード (レスポンスには base64 データが含まれています。ローカルでデコードできます。)
パラメータの完全な一覧については、公式 API ドキュメントをご覧ください。
GroupDocs.Parser Cloud SDK for Java のインストールと構成
Maven の依存関係を pom.xml に追加してください(または同等の Gradle スニペット)。
<dependency>
<groupId>com.groupdocs</groupId>
<artifactId>groupdocs-parser-cloud</artifactId>
<version>26.2</version>
</dependency>
SDK はクラウド ライブラリとして提供されます。ローカル バイナリは必要ありません。最新パッケージはリリース ページからダウンロードしてください。Java 8 以上がインストールされており、クライアント ID とシークレットを持つ有効な GroupDocs Cloud アカウントがあることを確認してください。
GroupDocs.Parser Cloud SDK for Java 画像取得機能
- PDF の完全な画像抽出 - 文書に埋め込まれたすべてのラスター画像とベクター画像を取得します。
- 各画像のメタデータ - ファイル名、サイズ、フォーマット、ページ番号を返します。
- すべての一般的な画像フォーマットのサポート - PNG, JPG, BMP, GIF, TIFF, など多数。
- クラウドストレージ統合 - ファイルをダウンロードせずに、GroupDocs Cloud に保存されたファイルと直接連携します。
- スケーラブルな REST‑ベースの処理 - クラウド API を介して大規模な PDF や高負荷のワークロードを処理します。
画像抽出設定の微調整
基本的なリクエストはそのまま動作しますが、次のようなオプションを調整できます:
- パスワード保護 - 暗号化された PDF 用に
FileInfoのpasswordプロパティを設定します。 - ページ範囲 - リクエスト JSON に
pages配列を追加して、特定のページに抽出を限定します。 - 画像形式変換 - リクエストで希望する出力タイプを指定して、別の形式への変換を要求します(正確なフィールドについては API reference を参照してください)。
パスワード設定の例(メインコードから抜粋):
FileInfo fileInfo = new FileInfo()
.setFilePath("protected.pdf")
.setPassword("mySecret");
効率的な PDF 画像抽出の実用的なヒント
- ファイルの存在を検証 してからリクエストを送信し、不要な API 呼び出しを回避します。
- 大きなファイルを扱う際は ストリームで画像を処理 してメモリ使用量を削減します。
- 特定のページの画像だけが必要な場合は ページネーションを使用 すると、応答が高速化します。
- HTTP 429 応答で指数バックオフを実装し、 API のレート制限を処理 します。
- トラブルシューティングと監査トレイルを簡素化するために 保存された各ファイル名をログに記録 します。
結論
Java で PDF 文書から画像を抽出することは、GroupDocs.Parser Cloud SDK for Java の力を活用すれば、シンプルで信頼性の高いタスクになります。SDK は認証情報の管理、クラウドストレージとのやり取り、画像のデコードを処理し、アプリケーションロジックに集中できるようにします。本番環境での導入には、価格ページ で適切なライセンスを購入するか、評価用に一時ライセンスを取得してください。本記事のコード例、cURL ガイド、ベストプラクティスの推奨事項を活用すれば、任意の Java ベースのソリューションに PDF 画像抽出を統合する準備が整います。
よくある質問
PDFから抽出できる形式は何ですか?
SDK は PNG、JPG、BMP、GIF、TIFF などのラスタ形式と、画像として保存されている場合のベクター グラフィックスを抽出します。PDFから画像を抽出する前にダウンロードする必要がありますか?
いいえ。SDKはGroupDocs Cloudストレージに保存されているファイルを直接操作するため、ローカルにダウンロードする必要はありません。SDKは大きなPDFをどのように処理しますか?
抽出はサーバー側で実行されるため、マシンのメモリ使用量は低く抑えられます。また、特定のページに抽出を限定することでパフォーマンスを向上させることもできます。コードを書かずに抽出をテストする方法はありますか?
はい、上記のcURLコマンドを使用するか、製品ページのインタラクティブAPIコンソールを試すことができます。
