コード例 #1
0
 private function headOfPdf(Mypdf $fpdf, $test_name, $variant, $num_tasks)
 {
     $fpdf->AliasNbPages();
     // для вывода общего числа страниц
     $fpdf->AddFont('TimesNewRomanPSMT', '', 'times.php');
     $fpdf->AddPage();
     $fpdf->Head($test_name);
     $fpdf->info($variant);
     // вывод информации о билете
     $fpdf->task_table($num_tasks);
     // вывод таблицы результатов
 }
コード例 #2
0
ファイル: FillGaps.php プロジェクト: mrudanov/uirSV
 public function pdf(Mypdf $fpdf, $count, $answered = false)
 {
     $text_parts = explode("<>", $this->text);
     //части текста между селектами
     $parse = explode("%", $this->variants);
     $variants = explode("<>", $parse[0]);
     $num_slot = count($variants);
     $text = '';
     $fpdf->SetFont('TimesNewRomanPSMT', 'U', 12);
     $fpdf->Cell(20, 10, iconv('utf-8', 'windows-1251', 'Вопрос ' . $count . '.'), 0, 0);
     $fpdf->Cell(7, 10, iconv('utf-8', 'windows-1251', 'Заполните пропуски в тексте'), 0, 1);
     $fpdf->SetFont('TimesNewRomanPSMT', '', 12);
     if ($answered) {
         // пдф с ответами
         $answers = explode(";", $this->answer);
         for ($i = 1; $i <= $num_slot; $i++) {
             $text .= $text_parts[$i - 1] . '(' . $i . ' ' . $answers[$i - 1] . ') ';
             //формируем текст вопроса без пропущенных слов
         }
         $fpdf->Write(5, iconv('utf-8', 'windows-1251', $text));
         // вывод текста
         $fpdf->Ln(5);
         for ($i = 1; $i <= $num_slot; $i++) {
             // вывод верных ответов
             $fpdf->Write(5, iconv('utf-8', 'windows-1251', $i . ': ' . $answers[$i - 1]));
             $fpdf->Ln(5);
         }
     } else {
         // без ответов
         for ($i = 1; $i <= $num_slot; $i++) {
             $text .= $text_parts[$i - 1] . $i . '_______________';
             //формируем текст вопроса
         }
         $parse_group_variants = [];
         $group_variants = [];
         $num_var = [];
         for ($i = 0; $i < count($variants); $i++) {
             $parse_group_variants[$i] = explode(";", $variants[$i]);
             //варинаты каждого селекта
             $group_variants[$i] = QuestionController::mixVariants($parse_group_variants[$i]);
             //перемешиваем варианты
             $num_var[$i] = count($group_variants[$i]);
         }
         $fpdf->Write(5, iconv('utf-8', 'windows-1251', $text));
         // вывод текста
         $fpdf->Ln(5);
         for ($i = 1; $i <= $num_slot; $i++) {
             // вывод вариантов
             $fpdf->Write(5, iconv('utf-8', 'windows-1251', $i . ': '));
             for ($j = 0; $j < $num_var[$i - 1] - 1; $j++) {
                 $fpdf->Write(5, iconv('utf-8', 'windows-1251', $group_variants[$i - 1][$j] . ', '));
             }
             $fpdf->Write(5, iconv('utf-8', 'windows-1251', $group_variants[$i - 1][$j] . '.'));
             // вывод последнего варианта
             $fpdf->Ln(5);
         }
     }
 }
コード例 #3
0
ファイル: OneChoice.php プロジェクト: mrudanov/uirSV
 public function pdf(Mypdf $fpdf, $count, $answered = false)
 {
     $parse = $this->variants;
     $variants = explode(";", $parse);
     $fpdf->SetFont('TimesNewRomanPSMT', 'U', 12);
     $fpdf->Cell(20, 10, iconv('utf-8', 'windows-1251', 'Вопрос ' . $count . '.'), 0, 0);
     $fpdf->Cell(7, 10, iconv('utf-8', 'windows-1251', 'Выберите один вариант ответа'), 0, 1);
     $fpdf->SetFont('TimesNewRomanPSMT', '', 12);
     $fpdf->MultiCell(0, 5, iconv('utf-8', 'windows-1251', $this->text), 0, 1);
     $fpdf->Ln(2);
     $fpdf->SetWidths(array('10', '170'));
     if ($answered) {
         // пдф с ответами
         $answer = $this->answer;
         $new_variants = Session::get('saved_variants_order');
         foreach ($new_variants as $var) {
             if ($answer == $var) {
                 $fpdf->Row(array('   +', iconv('utf-8', 'windows-1251', $var)));
             } else {
                 $fpdf->Row(array(iconv('utf-8', 'windows-1251', ''), iconv('utf-8', 'windows-1251', $var)));
             }
             $fpdf->Ln(0);
         }
         Session::forget('saved_variants_order');
     } else {
         // без ответов
         $new_variants = QuestionController::mixVariants($variants);
         Session::put('saved_variants_order', $new_variants);
         foreach ($new_variants as $var) {
             $fpdf->Row(array(iconv('utf-8', 'windows-1251', ''), iconv('utf-8', 'windows-1251', $var)));
             $fpdf->Ln(0);
         }
     }
 }
コード例 #4
0
ファイル: MultiChoice.php プロジェクト: mrudanov/uirSV
 public function pdf(Mypdf $fpdf, $count, $answered = false)
 {
     $parse = $this->variants;
     $variants = explode(";", $parse);
     $fpdf->SetFont('TimesNewRomanPSMT', 'U', 12);
     $fpdf->Cell(20, 10, iconv('utf-8', 'windows-1251', 'Вопрос ' . $count . '.'), 0, 0);
     $fpdf->Cell(7, 10, iconv('utf-8', 'windows-1251', 'Выберите один или несколько вариантов ответа'), 0, 1);
     $fpdf->SetFont('TimesNewRomanPSMT', '', 12);
     $fpdf->MultiCell(0, 5, iconv('utf-8', 'windows-1251', $this->text), 0, 1);
     $fpdf->Ln(2);
     $fpdf->SetWidths(array('10', '170'));
     if ($answered) {
         // пдф с ответами
         $answers = explode(";", $this->answer);
         $new_variants = Session::get('saved_variants_order');
         for ($i = 0; $i < count($new_variants); $i++) {
             // идем по всем вариантам
             for ($j = 0; $j < count($answers); $j++) {
                 // идем по всем ответам
                 if ($answers[$j] == $new_variants[$i]) {
                     // если вариант совпал с ответом
                     $fpdf->Row(array('   +', iconv('utf-8', 'windows-1251', $new_variants[$i])));
                     $fpdf->Ln(0);
                     break;
                 } else {
                     if ($j == count($answers) - 1) {
                         // проверяем, не все ли ответы просмотрены
                         $fpdf->Row(array(iconv('utf-8', 'windows-1251', ''), iconv('utf-8', 'windows-1251', $new_variants[$i])));
                         // если так, то выводим строку без "+"
                         $fpdf->Ln(0);
                     } else {
                         continue;
                     }
                     // иначе смотрим следующий ответ
                 }
             }
         }
         Session::forget('saved_variants_order');
     } else {
         // без ответов
         $new_variants = QuestionController::mixVariants($variants);
         Session::put('saved_variants_order', $new_variants);
         foreach ($new_variants as $var) {
             $fpdf->Row(array(iconv('utf-8', 'windows-1251', ''), iconv('utf-8', 'windows-1251', $var)));
             $fpdf->Ln(0);
         }
     }
 }
コード例 #5
0
ファイル: AccordanceTable.php プロジェクト: mrudanov/uirSV
 public function pdf(Mypdf $fpdf, $count, $answered = false)
 {
     $text_parse = $this->text;
     $parse = $this->variants;
     $variants = explode(";", $parse);
     $num_var = count($variants);
     $text = explode(";", $text_parse);
     $num_text = count($text);
     $rows = [];
     $fpdf->SetFont('TimesNewRomanPSMT', 'U', 12);
     $fpdf->Cell(20, 10, iconv('utf-8', 'windows-1251', 'Вопрос ' . $count . '.'), 0, 0);
     $fpdf->Cell(7, 10, iconv('utf-8', 'windows-1251', 'Заполните таблицу соответствий'), 0, 1);
     $fpdf->SetFont('TimesNewRomanPSMT', '', 12);
     $coloumn_array = [];
     $coloumn_array[0] = '30';
     for ($i = 1; $i <= $num_var; $i++) {
         // вычисляем ширину столбцов
         $coloumn_array[$i] = (string) intval(150 / $num_var);
     }
     for ($i = $num_var; $i >= 1; $i--) {
         // формируем первую строку
         $variants[$i] = iconv('utf-8', 'windows-1251', $variants[$i - 1]);
     }
     $variants[0] = '';
     $fpdf->SetWidths($coloumn_array);
     // устанавливаем ширину колонок
     $fpdf->Row($variants);
     // чертим первую строку
     if ($answered) {
         // пдф с ответами
         $answers = explode(";", $this->answer);
         $k = 0;
         for ($i = 0; $i < $num_text; $i++) {
             // формируем со второй по конечную строки
             $rows[$i][0] = iconv('utf-8', 'windows-1251', $text[$i]);
             // в первом стобце всегда название объекта
             for ($j = 1; $j <= $num_var; $j++) {
                 // идем по колонкам
                 if ($k < count($answers)) {
                     // если еще не превысили размер массива ответов
                     if ($i * $num_var + $j == $answers[$k]) {
                         // если номер ячейки совпадает с ответом
                         $rows[$i][$j] = '  +  ';
                         $k++;
                     } else {
                         $rows[$i][$j] = '';
                     }
                 } else {
                     $rows[$i][$j] = '';
                 }
             }
         }
     } else {
         // без ответов
         for ($i = 0; $i < $num_text; $i++) {
             // формируем со второй по конечную строки
             $rows[$i][0] = iconv('utf-8', 'windows-1251', $text[$i]);
             for ($j = 1; $j <= $num_var; $j++) {
                 $rows[$i][$j] = '';
             }
         }
     }
     for ($i = 0; $i < $num_text; $i++) {
         // выводим строки для обоих случаев
         $fpdf->Row($rows[$i]);
         $fpdf->Ln(0);
     }
 }