クラウドに保存されたPDFドキュメントから個々の画像を抽出することは、視覚資産を再利用または分析する必要がある最新のC#アプリケーションにとって頻繁な要件です。Aspose.PDF for .NETは、このタスクを簡素化する強力なクラウドベースAPIを提供します。このガイドでは、C#とAspose.PDF Cloud SDKを使用してPDFファイルから画像を抽出する方法を学びます。ガイドの最後までに、SDKコードと同等のcURL呼び出しの両方を含む、完全な本番環境向けソリューションが手に入ります。

C# における PDF 画像抽出の要件

クラウドネイティブなドキュメント処理パイプラインを構築する開発者は、リモートストレージにある PDF からグラフィックを抽出する必要があることがよくあります。一般的な要件は次のとおりです:

  • Aspose Cloud ストレージに保存された PDF へのアクセス。
  • ドキュメントに埋め込まれたすべての画像オブジェクトを列挙する機能。
  • 画質を損なうことなく、元の形式で各画像をダウンロード。
  • サーバー上で大きな PDF を処理するための最小限のメモリフットプリント。

一般的なファイルシステムツールではクラウドストレージに直接アクセスできず、デスクトップソフトウェアを使用した手動抽出は自動化されたワークロードに対してスケールしません。クラウド対応ライブラリを使用したプログラム的アプローチが不可欠です。

Aspose.PDF Cloud SDK for .NET が PDF 画像抽出にどのように適合するか

Aspose.PDF Cloud SDK for .NET は、Aspose Cloud に保存された PDF と連携する REST ベースの API を提供します。GetDocumentImages のようなメソッドで画像の一覧を取得し、GetImage で画像をダウンロードできます。すべて HTTPS 経由です。SDK は認証、ストレージ管理、バイナリデータのストリーミングを処理し、ビジネスロジックに集中できるようにします。

SDK は、チャンクアップロードと効率的なメモリ使用により大きなファイルもサポートしており、サーバーサイド アプリケーションのパフォーマンス要件に合わせています。詳細な API の使用方法は、公式ドキュメント および API リファレンス で確認できます。

ソリューションの構築: C# で PDF から画像を抽出

Aspose.PDF Cloud SDK for .NET のインストール

まず、SDK パッケージをプロジェクトに追加します。

dotnet add package Aspose.PDF-Cloud

バイナリはダウンロードページからもダウンロードできます。

Aspose Cloud の認証情報を構成する

クライアント ID とシークレットで構成オブジェクトを作成します。

var config = new Configuration
{
    ClientId = "YOUR_CLIENT_ID",
    ClientSecret = "YOUR_CLIENT_SECRET"
};
var pdfApi = new PdfApi(config);

Configuration クラスは API リファレンス にドキュメント化されています。

PDF をクラウドストレージにアップロード

PDF がまだ Aspose Cloud ストレージにない場合は、アップロードしてください。

using (var fileStream = File.OpenRead(pdfFileName))
{
    byte[] fileBytes = new byte[fileStream.Length];
    fileStream.Read(fileBytes, 0, fileBytes.Length);
    pdfApi.UploadFile(Path.Combine("Temp", pdfFileName), fileBytes);
}

UploadFile メソッドはファイルを Temp フォルダーに保存します。

埋め込み画像のリストを取得する

各画像に関する情報を取得するために API を呼び出します。

ImagesResponse imagesResponse = pdfApi.GetDocumentImages(pdfFileName);

ImagesResponse は ImageInfo オブジェクトのコレクションを含み、各オブジェクトは Id と ImageFormat を持ちます。

各画像をダウンロードしてローカルに保存

画像リストを反復処理し、ダウンロードしてディスクに書き込みます。

foreach (ImageInfo imageInfo in imagesResponse.Images.List)
{
    int imageId = imageInfo.Id ?? 0;
    string format = imageInfo.ImageFormat?.ToLower() ?? "png";
    string outputFileName = $"extracted_image_{imageId}.{format}";
    byte[] imageBytes = pdfApi.GetImage(pdfFileName, imageId);
    File.WriteAllBytes(outputFileName, imageBytes);
}

このループは元の画像形式を保持し、extracted_image_<id>.<ext>という名前のファイルを作成します。

PDFから画像を抽出する完全動作例(クラウドストレージ使用)

次のコードは、認証からクリーンアップまでの完全なワークフローを示しています。

using System;
using System.IO;
using Aspose.Pdf.Cloud.Sdk.Api;
using Aspose.Pdf.Cloud.Sdk.Client;
using Aspose.Pdf.Cloud.Sdk.Model;

class ExtractImagesFromPdf
{
    static void Main()
    {
        // Replace with your actual Aspose Cloud credentials
        string clientId = "YOUR_CLIENT_ID";
        string clientSecret = "YOUR_CLIENT_SECRET";

// Initialize Aspose.PDF Cloud configuration
        var config = new Configuration
        {
            ClientId = clientId,
            ClientSecret = clientSecret
        };
        var pdfApi = new PdfApi(config);

// PDF file name (must be present in Aspose Cloud storage)
        string pdfFileName = "input.pdf";

// Optional: upload the PDF to cloud storage if it does not exist there
        if (!File.Exists(pdfFileName))
        {
            Console.WriteLine($"Local file '{pdfFileName}' not found.");
            return;
        }
        using (var fileStream = File.OpenRead(pdfFileName))
        {
            byte[] fileBytes = new byte[fileStream.Length];
            fileStream.Read(fileBytes, 0, fileBytes.Length);
            pdfApi.UploadFile(Path.Combine("Temp", pdfFileName), fileBytes);
        }

// Retrieve list of images embedded in the PDF
        ImagesResponse imagesResponse = pdfApi.GetDocumentImages(pdfFileName);
        if (imagesResponse?.Images?.List == null || imagesResponse.Images.List.Count == 0)
        {
            Console.WriteLine("No images found in the PDF.");
            return;
        }

// Extract each image and save locally
        foreach (ImageInfo imageInfo in imagesResponse.Images.List)
        {
            int imageId = imageInfo.Id ?? 0;
            string format = imageInfo.ImageFormat?.ToLower() ?? "png";
            string outputFileName = $"extracted_image_{imageId}.{format}";

// Download image bytes from the cloud
            byte[] imageBytes = pdfApi.GetImage(pdfFileName, imageId);
            if (imageBytes == null || imageBytes.Length == 0)
            {
                Console.WriteLine($"Failed to download image ID {imageId}.");
                continue;
            }

// Write image to local file system
            File.WriteAllBytes(outputFileName, imageBytes);
            Console.WriteLine($"Image ID {imageId} saved as '{outputFileName}'.");
        }

// Optional: clean up uploaded PDF from cloud storage
        pdfApi.DeleteFile(Path.Combine("Temp", pdfFileName));
    }
}

Note: このコード例はコア機能を示しています。プロジェクトで使用する前に、ファイルパスや設定値を実際の環境に合わせて更新し、すべての必須依存関係が正しくインストールされていることを確認し、開発環境で徹底的にテストしてください。問題が発生した場合は、公式ドキュメント または サポートチーム にお問い合わせください。

cURL と REST API を使用した PDF 画像抽出の実行

以下は、C# コードを書かずに同じ操作を実行する等価な cURL コマンドです。

1. 認証してアクセストークンを取得する

curl -X POST "https://api.aspose.cloud/v3.0/oauth2/token?grant_type=client_credentials" \
     -u "YOUR_CLIENT_ID:YOUR_CLIENT_SECRET"

レスポンスには、以降の呼び出しで使用される access_token が含まれています。

2. ソース PDF をアップロード

curl -X PUT "https://api.aspose.cloud/v3.0/pdf/storage/file/Temp/input.pdf" \
     -H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
     -T "input.pdf"

3. 埋め込み画像の一覧

curl -X GET "https://api.aspose.cloud/v3.0/pdf/input.pdf/images" \
     -H "Authorization: Bearer YOUR_ACCESS_TOKEN"

JSON のレスポンスには、画像 ID とフォーマットの配列が含まれます。

4. 各画像をダウンロード

curl -X GET "https://api.aspose.cloud/v3.0/pdf/input.pdf/images/1" \
     -H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
     -o "extracted_image_1.png"

前の手順で取得した実際の画像 ID に 1 を置き換えてください。すべての ID に対してコマンドを繰り返します。

詳細については、公式 API ドキュメントをご覧ください。

PDF 画像抽出の構成オプション

ストレージ フォルダーの設定

UploadFile と DeleteFile の呼び出しでパスを変更することで、デフォルトのストレージフォルダーを変更できます。例えば、"Temp" の代わりに "Documents" を使用します。

ターゲット画像形式の選択

SDK は元の形式で返しますが、ファイルを保存する際に別の拡張子を指定することで変換できます。png のように統一された出力が必要な場合は、ダウンロードループ内の format 変数を調整してください。

リクエストタイムアウトの制御

PdfApi クライアントではカスタムタイムアウトを設定できます:

pdfApi.Configuration.Timeout = 300000; // 5 minutes

タイムアウトを延長すると、非常に大きな PDF を処理する際に役立ちます。

結論

クラウドに保存された PDF ファイルから画像を抽出することは、Aspose.PDF for .NET を使用すれば簡単になります。SDK は認証、ストレージ、画像取得を処理し、アプリケーションロジックに集中できるようにします。製品ページで価格詳細を確認し、製品ページで適切なライセンスを取得することを忘れないでください。また、一時ライセンスページ から一時ライセンスを取得できます。提供されたコードと cURL の例を使用すれば、任意の .NET クラウドサービスに PDF 画像抽出を統合する準備が整います。

FAQs

Aspose.PDF Cloud SDK for .NET を使用して PDF から画像を抽出する方法は?
PdfApi.GetDocumentImages メソッドを使用して画像を一覧取得し、PdfApi.GetImage を使用して各画像をダウンロードします。完全なワークフローは上記のコード例に示されています。

PDFからコードを書かずに画像を抽出できますか?
はい、同じ操作はREST APIとcURLコマンドを使用して実行でき、“cURL と REST API を使用した PDF 画像抽出の実行” セクションに示されています。

PDFから抽出できる画像フォーマットは何ですか?
API は、埋め込まれた各画像の元のフォーマット(例: PNG、JPEG、BMP、または TIFF)を返します。フォーマットを判別するには ImageInfo.ImageFormat プロパティを確認できます。

本番環境で実行するにはライセンスが必要ですか?
商用ライセンスは本番展開に必要です。製品ページで価格を確認でき、一時ライセンスページ から一時ライセンスを取得できます。

Read More