Новый ресурс
01.05.2026
36

<?php if (!extension_loaded('gd')) { die("Необходимо включить расширение GD"); } // Получаем параметры запроса $eventName = isset($_GET['event']) ? urldecode($_GET['event']) : 'Название события'; $lastName = isset($_POST['last_name']) ? $_POST['last_name'] : ''; $firstName = isset($_POST['first_name']) ? $_POST['first_name'] : ''; $middleName = isset($_POST['middle_name']) ? $_POST['middle_name'] : ''; $training = isset($_POST['training']) ? $_POST['training'] : ''; $date = isset($_POST['date']) ? $_POST['date'] : ''; // Форматируем дату в нужный формат (например, 12.09.2024 г.) if (!empty($date)) { $dateTime = DateTime::createFromFormat('Y-m-d', $date); if ($dateTime) { $date = $dateTime->format('d.m.Y') . ' г.'; } } // Проверяем, отправлена ли форма if ($_SERVER['REQUEST_METHOD'] == 'POST') { // Загружаем изображение-шаблон $imagePath = MODX_BASE_PATH . 'template_gen/template.jpg'; // Укажите путь к вашему изображению-шаблону $image = imagecreatefromjpeg($imagePath); if (!$image) { die('Ошибка при загрузке изображения.'); } // Устанавливаем цвет текста (черный) $textColor = imagecolorallocate($image, 0, 0, 0); // Путь к файлу шрифта (TTF-файл) $fontPath = MODX_BASE_PATH . 'template_gen/ALS Sector Bold.otf'; // Укажите путь к файлу шрифта // Размер шрифта $fontSize = 93; // Координаты для вставки текста (в пикселях) $nameX = 1059; $nameY = 1720; $trainingX = 1059; $trainingY = 2100; $dateX = 1750; $dateY = 3054; $eventX = -700; $eventY = -1600; // Формируем полное имя $fullName = $lastName . ' ' . $firstName . ' ' . $middleName; // Накладываем текст ФИО на изображение imagettftext($image, $fontSize, 0, $nameX, $nameY, $textColor, $fontPath, $fullName); // Накладываем текст тренинга imagettftext($image, $fontSize, 0, $trainingX, $trainingY, $textColor, $fontPath, $training); // Накладываем текст даты imagettftext($image, $fontSize, 0, $dateX, $dateY, $textColor, $fontPath, $date); // Накладываем текст Названия события imagettftext($image, $fontSize, 0, $eventX, $eventY, $textColor, $fontPath, $eventName); // Устанавливаем заголовки для скачивания изображения header('Content-Description: File Transfer'); header('Content-Type: image/jpeg'); header('Content-Disposition: attachment; filename="certificate.jpg"'); header('Content-Transfer-Encoding: binary'); header('Expires: 0'); header('Cache-Control: must-revalidate'); header('Pragma: public'); // Выводим изображение в браузер для скачивания imagejpeg($image); // Освобождаем память imagedestroy($image); exit; }

Политика обработки персональных данных