從 PDF 檔案中提取圖像是構建文件處理流水線時的常見需求,特別是當您需要將圖形重複用於縮圖、報告或進一步分析時。 GroupDocs.Parser Cloud SDK for Java 提供了一個直接的 API,讓您只需幾行程式碼即可從 PDF 中提取所有嵌入的圖像。本指南將帶您完成 SDK 的配置、執行完整的程式碼範例、使用 cURL 完成相同任務,以及應用最佳實踐以確保可靠的 PDF 圖像提取。

在 Java 中 5 步提取 PDF 文檔中的圖像

  1. 配置 API 憑證:建立一個 Configuration 物件,並設定您的 client ID 和 secret。
Configuration config = new Configuration();
config.setClientId("YOUR_CLIENT_ID");
config.setClientSecret("YOUR_CLIENT_SECRET");
  1. 初始化 Parser API:使用配置建立 ApiClient,並實例化 ParserApi。
ApiClient apiClient = new ApiClient(config);
ParserApi parserApi = new ParserApi(apiClient);
  1. 建立圖像提取請求:使用 FileInfo 指定 PDF 檔案路徑,並建立 ExtractImagesRequest。

    String inputFilePath = "input.pdf";
    ExtractImagesRequest request = new ExtractImagesRequest()
            .setFileInfo(new FileInfo().setFilePath(inputFilePath));
    
  2. 執行提取並檢索圖像:呼叫 extractImages 並取得 Image 物件的清單。

ImagesResult imagesResult = parserApi.extractImages(request);
List<Image> images = imagesResult.getImages();
  1. 將每個圖像保存到本地存儲:遍歷集合並將二進位資料寫入檔案。
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 圖像

您可以透過直接呼叫 GroupDocs.Parser Cloud REST 端點,而無需編寫 Java 程式碼,即可達成相同的結果。

  1. 取得存取令牌
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"
  1. 上傳 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"
  1. 請求圖像提取
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"}}'
  1. 下載提取的圖像(回應包含 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 或更高版本,並擁有有效的 GroupDocs Cloud 帳戶以及客戶端 ID 和密鑰。

GroupDocs.Parser Cloud SDK for Java 功能:啟用圖像檢索

  • 完整的 PDF 圖像提取 - 檢索文件中嵌入的所有光柵和向量圖像。
  • 每個圖像的元資料 - 返回檔案名稱、大小、格式和頁碼。
  • 支援所有常見的圖像格式 - PNG、JPG、BMP、GIF、TIFF,等更多。
  • 雲端儲存整合 - 直接在 GroupDocs Cloud 中的檔案上工作,無需先下載。
  • 可擴展的 REST‑based 處理 - 透過雲端 API 處理大型 PDF 和高容量工作負載。

微調圖像提取設定

雖然基本請求已可直接使用,但您可以調整以下選項:

  • 密碼保護 - 在 FileInfo 上設定 password 屬性以處理加密的 PDF。
  • 頁面範圍 - 透過在請求 JSON 中加入 pages 陣列,將提取限制於特定頁面。
  • 影像格式轉換 - 在請求中指定所需的輸出類型以請求轉換為其他格式(請參考 API 參考 以取得確切欄位)。

設定密碼的範例(摘自主程式碼):

FileInfo fileInfo = new FileInfo()
        .setFilePath("protected.pdf")
        .setPassword("mySecret");

高效 PDF 圖像提取的實用技巧

  • 驗證檔案是否存在 在發送請求之前,以避免不必要的 API 呼叫。
  • 以串流方式處理影像 在處理大型檔案時減少記憶體使用。
  • 使用分頁 若只需要特定頁面的影像,這可加快回應速度。
  • 處理 API 速率限制 透過在 HTTP 429 回應時實作指數退避。
  • 記錄每個已儲存的檔名 以簡化故障排除和稽核追蹤。

結論

在 Java 中從 PDF 文檔提取圖像變得簡單且可靠,只要您利用 GroupDocs.Parser Cloud SDK for Java 的強大功能。該 SDK 處理憑證管理、雲存儲交互和圖像解碼,讓您專注於應用程式邏輯。對於生產環境部署,請在 定價頁面 購買正式授權,或獲取臨時授權以進行評估。通過本文中的代碼示例、cURL 指南和最佳實踐建議,您即可將 PDF 圖像提取整合到任何基於 Java 的解決方案中。

常見問題

  • 可以從 PDF 中提取哪些格式?
    SDK 可提取光柵格式,如 PNG、JPG、BMP、GIF 和 TIFF,以及在作為圖像存儲時的向量圖形。

  • 在提取圖像之前,我需要先下載 PDF 嗎?
    不需要。SDK 直接與存儲在 GroupDocs Cloud 的文件協同工作,無需本地下載。

  • SDK 如何處理大型 PDF?
    抽取在伺服器端執行,因此您機器上的記憶體使用量保持低。您也可以將抽取限制在特定頁面,以提升效能。

  • 是否有方法在不編寫程式碼的情況下測試提取?
    是的,您可以使用上面提供的 cURL 命令,或在產品頁面上嘗試互動式 API 控制台。

閱讀更多