TGViewer
Java Ready | Программирование Java Ready | Программирование @java_ready · 9.26K subscribers
Post #1381 1.73K
Рендерим страницы в PNG из PDF!

Иногда нужно превратить документ в набор картинок. Java справляется с этим с библиотекой PDFBox которая рендерит страницы в BufferedImage.

Подключаем зависимость (Gradle) для рендера PDF в изображения:
implementation "org.apache.pdfbox:pdfbox:3.0.2"


Открываем PDF и создаём рендерер для страниц:
var pdf = org.apache.pdfbox.pdmodel.PDDocument.load(java.nio.file.Files.readAllBytes(
java.nio.file.Path.of("input.pdf")));
var renderer = new org.apache.pdfbox.rendering.PDFRenderer(pdf);


Рендерим первую страницу с нужным DPI и сохраняем в PNG:
float dpi = 200f;
var img = renderer.renderImageWithDPI(0, dpi);
javax.imageio.ImageIO.write(img, "png", java.nio.file.Path.of("page-1.png").toFile());


Проходим по всем страницам и сохраняем каждую в отдельный файл:
for (int i = 0; i < pdf.getNumberOfPages(); i++) {
var bi = renderer.renderImageWithDPI(i, dpi);
javax.imageio.ImageIO.write(bi, "png", java.nio.file.Path.of("page-" + (i+1) + ".png").toFile());
}
pdf.close();


🔥 Подходит для генерации обложек, поиска по миниатюрам и веб-превью.

👉 Java Ready | #практика
  • 🔥 9
  • ❤ 5
  • 👍 4
More from @java_ready
  1. Oct 12, 2026Проверяем обновления через ETag в Java! Когда приложение часто запрашивает один ресурс, не…
  2. Oct 9, 2026photo post
  3. Oct 8, 2026Почему String.format может заменить точку на запятую? Представим, что программа сохраняет…
  4. Oct 7, 2026Почему split(".") в Java не делит строку по точке? На первый взгляд кажется, что достаточн…
  5. Oct 6, 2026Безопасная настройка retry для всей системы! В статье Java-разработчик делится опытом внед…
  6. Oct 5, 2026Почему после Stream.toList() нельзя добавить элемент? При работе со Stream часто нужно соб…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →