从 PDF 文件中提取图像是构建文档处理流水线时的常见需求,尤其是在需要将图形用于缩略图、报告或进一步分析时。GroupDocs.Parser Cloud SDK for Java 提供了一个简洁的 API,只需几行代码即可提取 PDF 中的所有嵌入图像。本指南将带您完成 SDK 的配置、运行完整的代码示例、使用 cURL 执行相同任务,并应用最佳实践以确保可靠的 PDF 图像提取。

在 Java 中提取 PDF 文档的图像(5 步)

  1. 配置 API 凭据: 创建一个 Configuration 对象并设置您的客户端 ID 和密钥。
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));
  1. 执行提取并检索图像:调用 extractImages 并获取 Image 对象的列表。

    ImagesResult imagesResult = parserApi.extractImages(request);
    List<Image> images = imagesResult.getImages();
    
  2. 将每个图像保存到本地存储:遍历集合并将二进制数据写入文件。

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 功能:启用图像检索

  • Full PDF image extraction - 检索文档中嵌入的所有光栅和矢量图像。
  • Metadata for each image - 返回文件名、大小、格式和页码。
  • Support for all common image formats - 支持所有常见图像格式,包括 PNG、JPG、BMP、GIF、TIFF,以及更多。
  • Cloud storage integration - 直接在 GroupDocs Cloud 中的文件上工作,无需先下载。
  • Scalable REST‑based processing - 通过云 API 处理大型 PDF 和高负载工作。

微调图像提取设置

虽然基本请求可以直接使用,但您可以调整以下选项:

  • 密码保护 - 为加密的 PDF 在 FileInfo 上设置 password 属性。
  • 页面范围 - 通过在请求 JSON 中添加 pages 数组,将提取限制在特定页面。
  • 图像格式转换 - 在请求中指定所需的输出类型以请求转换为其他格式(有关确切字段,请参阅 API reference)。

设置密码的示例(摘自主代码):

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 控制台。

阅读更多