从 PDF 文件中提取图像是构建文档处理流水线时的常见需求,尤其是在需要将图形用于缩略图、报告或进一步分析时。GroupDocs.Parser Cloud SDK for Java 提供了一个简洁的 API,只需几行代码即可提取 PDF 中的所有嵌入图像。本指南将带您完成 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 图像
您可以通过直接调用 GroupDocs.Parser Cloud REST 端点,而无需编写 Java 代码,实现相同的结果。
- 获取访问令牌
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 或更高版本,并拥有有效的 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 控制台。
