Java Ready | Программирование
8.89K subscribers
1.22K photos
60 videos
1 file
599 links
Авторский канал по разработке на Java.
Ресурсы, гайды, задачи, шпаргалки.
Информация ежедневно пополняется!

Автор: @energy_it

Реклама на бирже: https://telega.in/c/java_ready
Download Telegram
Рендерим страницы в 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 | #практика
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥95👍4
👩‍💻 DecimalFormat — инструмент для создания аккуратных и читаемых числовых форматов!

Когда важна подача данных, а не просто их значение, стандартные числа начинают работать против читаемости. Этот класс превращает цифры в понятные пользователю шаблоны.

Он незаменим в отчётности, логировании, интерфейсах и форматировании. Управляя маской, можно быстро адаптировать числовой вывод под требования клиента или дизайн системы.


👉 Java Ready | #шпора
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥11👍74🤝1
Отправка email прямо из кода!

Java умеет отправлять письма через SMTP без сторонних сервисов с помощью библиотеки javax.mail.

Подключаем зависимость (Maven):
<dependency>
<groupId>com.sun.mail</groupId>
<artifactId>jakarta.mail</artifactId>
<version>2.0.1</version>
</dependency>


Указываем настройки SMTP-сервера:
Properties props = new Properties();
props.put("mail.smtp.host", "smtp.gmail.com");
props.put("mail.smtp.port", "587");
props.put("mail.smtp.auth", "true");
props.put("mail.smtp.starttls.enable", "true");


Создаём сессию с логином и паролем:
Session session = Session.getInstance(props, new Authenticator() {
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication("you@example.com", "password");
}
});


Готовим письмо:
Message msg = new MimeMessage(session);
msg.setFrom("you@example.com");
msg.setRecipients(Message.RecipientType.TO, "target@example.com");
msg.setSubject("Тестовое письмо");
msg.setText("Привет! Это письмо отправлено из Java.");


Отправляем:
Transport.send(msg);


🔥 Работает с Gmail, Яндексом, корпоративной почтой и любым SMTP.

👉 Java Ready | #совет
Please open Telegram to view this post
VIEW IN TELEGRAM
12👍5🔥4
👩‍💻 Суммируем размер файлов каталога!

Проходим по папке, находим все файлы и складываем их размеры. Используем стандартный File, без рекурсии и дополнительных библиотек.

В этом посте:
Получаем каталог;

Перебираем все элементы;

Проверяем, что это файл.


Это будет полезно для анализа диска проверок переполнения логов и многого другого.

👉 Java Ready | #задача
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥85👍4
Подсчёт количества дней между двумя датами!

Java умеет работать с датами без ручной арифметики. Можно вычислить разницу между любыми двумя датами.

Создаём две даты через LocalDate:
var start = java.time.LocalDate.of(2025, 1, 10);
var end = java.time.LocalDate.of(2025, 3, 2);


Считаем разницу в днях через ChronoUnit:
long days = java.time.temporal.ChronoUnit.DAYS.between(start, end);
System.out.println("Дней прошло: " + days);


Можно вывести разницу в неделях и месяцах:
long weeks  = java.time.temporal.ChronoUnit.WEEKS.between(start, end);
long months = java.time.temporal.ChronoUnit.MONTHS.between(start, end);

System.out.println("Недель: " + weeks);
System.out.println("Месяцев: " + months);


🔥 Такой подход даёт точные результаты, учитывая високосные годы и длину месяцев.

👉 Java Ready | #практика
Please open Telegram to view this post
VIEW IN TELEGRAM
10👍6🔥4
👩‍💻 Делаем скриншот экрана через Robot!

Сегодня покажу, как на чистой Java без библиотек снять скриншот всего экрана и записать его в файл.

В этом посте:
Подключаем Robot и Toolkit для захвата экрана;

Делаем скрин всего монитора;

Сохраняем в PNG через ImageIO.


Удобно для логов ошибок, автотестов GUI или просто пранков.

👉 Java Ready | #гайд
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥175👍5🤝1
Создание CSV-файла с данными!

CSV — самый простой формат хранения таблиц. Строки это записи, значения разделяются запятыми. Java позволяет создать такой файл без библиотек.

Готовим список строк, которые попадут в CSV:
var rows = java.util.List.of(
"name,age,city",
"Alice,22,Paris",
"Bob,30,Berlin"
);


Преобразуем строки в единый текст:
var csv = String.join("\n", rows);


Сохраняем CSV-файл в проект:
java.nio.file.Files.writeString(
java.nio.file.Path.of("users.csv"),
csv
);


🔥 В итоге получаем готовый файл users.csv, который можно открыть в Excel, Numbers или Google Sheets.

👉 Java Ready | #практика
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥135👍4