Извлечение изображений из файлов PDF часто требуется при построении конвейеров обработки документов, особенно когда необходимо повторно использовать графику для миниатюр, отчетов или дальнейшего анализа. GroupDocs.Parser Cloud SDK for Java предоставляет простой API, позволяющий получить каждое встроенное изображение из PDF всего несколькими строками кода. В этом руководстве мы расскажем, как настроить SDK, запустить полный пример кода, использовать cURL для той же задачи и применить лучшие практики для обеспечения надежного извлечения изображений из PDF.
Извлечение изображений из PDF‑документов на Java за 5 шагов
- Настройте учетные данные API: Создайте объект
Configurationи задайте ваш client ID и secret.
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);
Создайте запрос на извлечение изображений: Укажите путь к PDF‑файлу, используя
FileInfo, и создайте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.
Полный пример кода: извлечение изображений из PDF‑документов на Java с использованием GroupDocs.Parser
В следующем примере демонстрируется полный рабочий процесс от настройки учетных данных до сохранения изображения.
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();
}
}
}
Примечание: Этот пример кода демонстрирует базовый функционал. Прежде чем использовать его в вашем проекте, убедитесь, что обновили все пути к файлам и значения конфигурации в соответствии с вашей реальной средой, проверьте, что все необходимые зависимости правильно установлены, и тщательно протестируйте в вашей среде разработки. Если вы столкнётесь с какими‑либо проблемами, обратитесь к официальной документации или свяжитесь с командой поддержки для получения помощи.
Извлечение изображений из PDF с помощью cURL и REST API
Вы можете достичь того же результата, не пиша код на Java, вызывая REST‑конечные точки GroupDocs.Parser Cloud напрямую.
- Получить токен доступа
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 с идентификатором клиента и секретом.
GroupDocs.Parser Cloud SDK for Java Функции, позволяющие извлекать изображения
- Полное извлечение изображений PDF - Извлекает каждое растровое и векторное изображение, встроенное в документ.
- Метаданные для каждого изображения - Возвращает имя файла, размер, формат и номер страницы.
- Поддержка всех распространённых форматов изображений - PNG, JPG, BMP, GIF, TIFF, и другие.
- Интеграция с облачным хранилищем - Работает напрямую с файлами, хранящимися в GroupDocs Cloud, без их предварительной загрузки.
- Масштабируемая обработка на основе REST‑based - Обрабатывает большие PDF и задачи с высоким объёмом нагрузки через облачный API.
Точная настройка параметров извлечения изображений
Хотя базовый запрос работает сразу же, вы можете настроить такие параметры, как:
- Защита паролем - Установите свойство
passwordвFileInfoдля зашифрованных PDF. - Диапазон страниц - Ограничьте извлечение определёнными страницами, добавив массив
pagesв JSON‑запрос. - Конвертация формата изображения - Запросите конвертацию в другой формат, указав желаемый тип вывода в запросе (см. API reference для точных полей).
Пример установки пароля (взято из основного кода):
FileInfo fileInfo = new FileInfo()
.setFilePath("protected.pdf")
.setPassword("mySecret");
Практические советы по эффективному извлечению изображений из PDF
- Проверьте наличие файла перед отправкой запроса, чтобы избежать ненужных вызовов API.
- Обрабатывайте изображения в потоках при работе с большими файлами, чтобы снизить потребление памяти.
- Используйте пагинацию, если вам нужны изображения только с определённых страниц; это ускорит ответ.
- Обрабатывайте ограничения скорости API, реализуя экспоненциальную задержку при ответах HTTP 429.
- Записывайте имя каждого сохранённого файла для упрощения отладки и аудита.
Заключение
Извлечение изображений из PDF‑документов в Java становится простой и надёжной задачей, когда вы используете возможности 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 на странице продукта.
