Модуль Сертифікат

Модуль Сертифікат

Aleksandr Berezhnoy -
Кількість відповідей: 5

Добрий день!

Хочу поділитися як налаштувати модуль Сertificate

Справа в тому що при відкритті сертифіката замість прізвищ ви отримаєте ?????????, тобто немає підтримки кирилиці

Вирішення просте.

Модуль Сертифікат використовую бібліотеку TCPDF (включена в мудл як стандартна) для генерації pdf, знаходимо потрібний шрифт з підтримкою кирилиці, конвертуємо далі завантажуємо всі три файла на сервер в теку lib/tcpdf/fonts/  

Тепер створюємо власний шаблон на базі A4 non-embedded

Попередньо створимо власний шаблон, для цього в файлі /mod/certificate/lang/uk/certificate.php додамо рядок з назвою нашого шаблону 

$string['typeA4_custom'] = 'МійA4 Certificate'; 

Заходимо в теку /mod/certificate/type/ створюємо теку власно шаблону, наприклад - A4_custom копіюємо в неї вміст теки A4_non_embedded і редагуємо файл certificate.php

Це для того щоб в меню вибору шаблону сертифікату з’явився наш шаблон

Далі створюємо сам сертифікат, тобто додаємо діяльність сертифікат, вибираємо наш шаблон.

В файлі міняємо назви, розмір і колір на власні завантажені, наприклад:

  1. // Add text
  2.  
  3. $pdf->SetTextColor(0, 0, 120);
  4. certificate_print_text($pdf, $x, $y, 'C', 'lobsteri', '', 30, get_string('title', 'certificate'));
  5. $pdf->SetTextColor(0, 0, 0);
  6. certificate_print_text($pdf, $x, $y + 20, 'C', 'opensans', '', 20, get_string('certify', 'certificate'));
  7. $pdf->SetTextColor(0, 119, 187);
  8. certificate_print_text($pdf, $x, $y + 36, 'C', 'lorabi', '', 36, fullname($USER));
  9. $pdf->SetTextColor(0, 0, 0);
  10. certificate_print_text($pdf, $x, $y + 55, 'C', 'vodafonerg', '', 20, get_string('statement', 'certificate'));
  11. certificate_print_text($pdf, $x, $y + 72, 'C', 'bebasneuecyrillic', '', 42, format_string($course->fullname));
  12. $pdf->SetTextColor(51, 51, 51);
  13. certificate_print_text($pdf, $x, $y + 92, 'C', 'vodafonerg', '', 14, certificate_get_date($certificate, $certrecord, $course));
  14. certificate_print_text($pdf, $x, $y + 102, 'C', 'opensans', '', 10, certificate_get_grade($certificate, $course));
  15. certificate_print_text($pdf, $x, $y + 112, 'C', 'opensans', '', 10, certificate_get_outcome($certificate, $course));
  16. if ($certificate->printhours) {
  17.     certificate_print_text($pdf, $x, $y + 122, 'C', 'opensans', '', 10, get_string('credithours', 'certificate') . ': ' .$certificate->printhours);
  18. }
  19. $pdf->SetTextColor(77, 77, 77);
  20. certificate_print_text($pdf, $x, $codey, 'C', 'opensans', '', 10, certificate_get_code($certificate, $certrecord));
  21. $i = 0;
  22. if ($certificate->printteacher) {
  23.     $context = context_module::instance($cm->id);
  24.     if ($teachers = get_users_by_capability($context, 'mod/certificate:printteacher', '', $sort = 'u.lastname ASC', '', '', '', '',false)) {
  25.         foreach ($teachers as $teacher) {
  26.             $i++;
  27.             $pdf->SetTextColor(0, 119, 187);
  28.             certificate_print_text($pdf, $sigx, $sigy + ($i * 4), 'L', 'adventurei', '', 18, fullname($teacher));
  29.         }
  30.     }
  31. }

Зразок сертифікату

Вкладення знімок1.png
Середня оцінка:Корисно (1)
У відповідь на Aleksandr Berezhnoy

Модуль Сертифікат

Alexandre Scherbyna -

Дякую! Думаю, що для багатьох наших користувачів це може бути корисним. Єдине що, на мій погляд, подібну інформацію краще розміщувати не на форумах, а у нашій базі даних  даних Різні корисні посилання і файли.

У відповідь на Alexandre Scherbyna

Модуль Сертифікат

Aleksandr Berezhnoy -
Добре, все зрозумів.

В наступний раз, подібну інформацію, оформлю красиву і детальну інструкцію в розділі Різні корисні посилання і файли.

Якщо потрібно саме це пост туди написати, напишу.


У відповідь на Aleksandr Berezhnoy

Модуль Сертифікат

Віктор Шупер -

Оновив до останньої версії Moodle (3.5.2) і не можу знайти модуль "Сертифікати". Його треба окремо ставити?

У відповідь на Aleksandr Berezhnoy

Re: Модуль Сертифікат

Роман Миколайович Коваль -
Привіт. 
Хочу поділитися як я швидко вирішив цю проблему.

Завантажуємо шрифти я до прикладу взяв 
dejavu-fonts-ttf-2.37
шукаємо в інтернеті.


На сервері шукаємо файл /mod/customcert/classes/element_helper.php

У ньому потрібно відшукати це, 
$pdf->setFont($font, $attr, $element->get_fontsize());

Замінити нв це:
 $fontPath = $_SERVER['DOCUMENT_ROOT'].'/mod/customcert/classes/font/dejavu-fonts-ttf-2.37/ttf/';  ///(Тут шлях де розмістили шрифти на сервері)
  \TCPDF_FONTS::addTTFfont($fontPath . 'DejaVuSans.ttf', 'TrueTypeUnicode', '', 96);  /// Підключаємо кастомні шрифти (Обераю конкретний файл шрифта що завантажив)
 $pdf->setFont('DejaVuSans', $attr, $element->get_fontsize());  /// В даному випадку у мене буде один шрифт для всього тексту який я обрав. (Розмір, колір, ітд, працює з редакторра)

І працює кирилиця. 

Хто знає добре PHP може інтегрувати більше шрифтів, мені було достатньо одного.