Всем привет! Это небольшой пост, чтобы помочь людям, которые хотят извлекать изображения из PDF-файлов.

Прежде всего, вам понадобится внешнее приложение, которое сделает всю работу за вас. Я использовал Ghostscript. Это действительно хороший инструмент для работы как с Windows, так и с Unix/Linux/Mac (Хорошо… я никогда не пробовал это на Mac. Но поскольку это работает на Unix, скорее всего, оно сработает).

Итак, для загрузки Ghostscript в свое приложение я использовал Maven, это хороший способ работы с зависимостями в моем Java-проекте. Ниже приведены теги зависимостей, которые нужно установить в файле Maven pom.xml.

<repositories>
        <repository>
            <id>org.ghost4j.repository.releases</id>
            <name>Ghost4J releases</name>
            <url>http://repo.ghost4j.org/maven2/releases</url>
        </repository>
        <repository>
            <id>org.ghost4j.repository.snapshots</id>
            <name>Ghost4J snapshots</name>
            <url>http://repo.ghost4j.org/maven2/snapshots</url>
        </repository>
</repositories>
<dependency>
    <groupId>org.ghost4j</groupId>
    <artifactId>ghost4j</artifactId>
    <version>1.0.0</version>
</dependency>

Все, что вам нужно для запуска Ghostscript, — это DLL этого приложения с именем gsdll64.dll. Я использовал приведенный ниже код для вызова файла. Важно вызывать это в начале вашего кода, например, в конструкторе класса. В этом случае я вызвал его из своего пути к классам.

Runtime.getRuntime().load(this.getClass().getResource("/gsdll64.dll").toString().replace("file:/", ""));

Наконец, приведенный ниже код читает ваш PDF-файл и извлекает изображения, такие как java.awt.Image.

import org.ghost4j.document.DocumentException;
import org.ghost4j.document.PDFDocument;
import org.ghost4j.renderer.RendererException;
import org.ghost4j.renderer.SimpleRenderer;
...
PDFDocument document = new PDFDocument();
document.load(new File(<pdf_path>));
SimpleRenderer render = new SimpleRenderer();
render.setResolution(300);
List<java.awt.Image> images = render.render(document);

Я надеюсь, что это поможет вам в вашем проекте.
Не забудьте поставить лайк и комментарий.
Спасибо!