[module.professor.pdf] Generate PDF (not tested but working) ONLY WORKS WITH 'prof_id' not ALL
This commit is contained in:
parent
e153b7ecb4
commit
2c0681dd7c
|
@ -0,0 +1,431 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
namespace api\module\professor;
|
||||||
|
|
||||||
|
|
||||||
|
use database\core\Repo;
|
||||||
|
use database\repo\prof;
|
||||||
|
use database\repo\cours;
|
||||||
|
use database\repo\td;
|
||||||
|
use database\repo\tp;
|
||||||
|
use database\repo\formation;
|
||||||
|
use error\core\Error;
|
||||||
|
use error\core\Err;
|
||||||
|
|
||||||
|
class pdfController{
|
||||||
|
|
||||||
|
|
||||||
|
/* (1) Get professor PDF fiche matching a specific ID
|
||||||
|
*
|
||||||
|
* @prof_id<array> Professor ID
|
||||||
|
*
|
||||||
|
* @return download<File> The PDF fiche
|
||||||
|
---------------------------------------------------------*/
|
||||||
|
public static function get($args){
|
||||||
|
$prof_id = -1;
|
||||||
|
extract($args);
|
||||||
|
|
||||||
|
/* (0) Initialize
|
||||||
|
---------------------------------------------------------*/
|
||||||
|
/* (1) Initialize data structure */
|
||||||
|
$data = [
|
||||||
|
'prof' => [],
|
||||||
|
'cours' => [],
|
||||||
|
'td' => [],
|
||||||
|
'tp' => [],
|
||||||
|
'form' => []
|
||||||
|
];
|
||||||
|
|
||||||
|
/* (2) Get repositories */
|
||||||
|
|
||||||
|
/** @var professor $prof_repo */
|
||||||
|
$prof_repo = Repo::getRepo('professor');
|
||||||
|
|
||||||
|
/** @var formation $form_repo */
|
||||||
|
$form_repo = Repo::getRepo('formation');
|
||||||
|
|
||||||
|
/** @var cours $cours_repo */
|
||||||
|
$cours_repo = Repo::getRepo('cours');
|
||||||
|
|
||||||
|
/** @var td $td_repo */
|
||||||
|
$td_repo = Repo::getRepo('td');
|
||||||
|
|
||||||
|
/** @var tp $tp_repo */
|
||||||
|
$tp_repo = Repo::getRepo('tp');
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/* (1) Get professor data
|
||||||
|
---------------------------------------------------------*/
|
||||||
|
/* (1) Request */
|
||||||
|
$fetched = $prof_repo->getWithVH($prof_id);
|
||||||
|
|
||||||
|
/* (2) Error */
|
||||||
|
if( count($fetched) < 1 )
|
||||||
|
return ['error' => new Error(Err::NoMatchFound)];
|
||||||
|
|
||||||
|
/* (3) Extract data */
|
||||||
|
$data['prof'] = $fetched[0];
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/* (2) Get each Cours
|
||||||
|
---------------------------------------------------------*/
|
||||||
|
/* (1) Request */
|
||||||
|
$fetched = $cours_repo->getForProfessor($prof_id);
|
||||||
|
|
||||||
|
/* (2) Store data if no error */
|
||||||
|
if( !is_null($fetched) )
|
||||||
|
$data['cours'] = $fetched;
|
||||||
|
|
||||||
|
/* (3) For each Cours -> parse formation list */
|
||||||
|
foreach($data['cours'] as $kcours=>$cours)
|
||||||
|
$data['cours'][$kcours]['formations'] = json_decode($cours['formations']);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/* (3) get each TD
|
||||||
|
---------------------------------------------------------*/
|
||||||
|
/* (1) Request */
|
||||||
|
$fetched = $td_repo->getForProfessor($prof_id);
|
||||||
|
|
||||||
|
/* (2) Store data if no error */
|
||||||
|
if( !is_null($fetched) )
|
||||||
|
$data['td'] = $fetched;
|
||||||
|
|
||||||
|
/* (3) For each TD -> parse formation list */
|
||||||
|
foreach($data['td'] as $ktd=>$td)
|
||||||
|
$data['td'][$ktd]['formations'] = json_decode($td['formations']);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/* (4) get each TP
|
||||||
|
---------------------------------------------------------*/
|
||||||
|
/* (1) Request */
|
||||||
|
$fetched = $tp_repo->getForProfessor($prof_id);
|
||||||
|
|
||||||
|
/* (2) Store data if no error */
|
||||||
|
if( !is_null($fetched) )
|
||||||
|
$data['tp'] = $fetched;
|
||||||
|
|
||||||
|
/* (3) For each TP -> parse formation list */
|
||||||
|
foreach($data['tp'] as $ktp=>$tp)
|
||||||
|
$data['tp'][$ktp]['formations'] = json_decode($tp['formations']);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/* (5) Get formations (id => label)
|
||||||
|
---------------------------------------------------------*/
|
||||||
|
/* (1) Request */
|
||||||
|
$fetched = $form_repo->get(null);
|
||||||
|
|
||||||
|
/* (2) Error: no formation found */
|
||||||
|
if( count($fetched) < 1 )
|
||||||
|
return ['error' => new Error(Err::RepoError)];
|
||||||
|
|
||||||
|
/* (3) Reference formations by key = idForm */
|
||||||
|
foreach($fetched as $form)
|
||||||
|
$data['form'][intval($form['idForm'])] = $form;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/* (6) Render PDF
|
||||||
|
---------------------------------------------------------*/
|
||||||
|
/* (1) Generate body */
|
||||||
|
$body = self::generate_pdf_body($data);
|
||||||
|
|
||||||
|
/* (2) Set headers */
|
||||||
|
$headers = [
|
||||||
|
'Content-Description' => 'File Transfer',
|
||||||
|
'Content-Transfer-Encoding' => 'binary',
|
||||||
|
'Cache-Control' => 'public, must-revalidate, max-age=0',
|
||||||
|
'Pragma' => 'public',
|
||||||
|
'X-Generator' => 'mPDF',
|
||||||
|
'Expires' => 'Sat, 26 Jul 1997 05:00:00 GMT',
|
||||||
|
'Last-Modified' => gmdate('D, d M Y H:i:s').' GMT',
|
||||||
|
'Content-Type' => 'application/pdf'
|
||||||
|
];
|
||||||
|
|
||||||
|
/* (3) Generate download */
|
||||||
|
return [
|
||||||
|
'headers' => $headers,
|
||||||
|
'body' => $body
|
||||||
|
];
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
private static function generate_pdf_body($data){
|
||||||
|
|
||||||
|
/* (1) Format data
|
||||||
|
---------------------------------------------------------*/
|
||||||
|
/* (1) Get fullname */
|
||||||
|
$fullname = $data['prof']['firstName'].' '.$data['prof']['lastName'];
|
||||||
|
|
||||||
|
/* (2) Get formatted date */
|
||||||
|
$date = date('d-m-Y');
|
||||||
|
|
||||||
|
/* (3) Total horaire */
|
||||||
|
$total_h = floatval($data['prof']['VHCours'])
|
||||||
|
+ floatval($data['prof']['VHTd'])
|
||||||
|
+ floatval($data['prof']['VHTp']);
|
||||||
|
|
||||||
|
$equiTD = floatval($data['prof']['equiTD']);
|
||||||
|
|
||||||
|
/* (4) Heures manquantes */
|
||||||
|
// TOTAL_H or equiTD ???
|
||||||
|
$missing_h = floatval($data['prof']['hoursToDo']) - $equiTD;
|
||||||
|
$missing_h = $missing_h < 0 ? 0 : $missing_h;
|
||||||
|
|
||||||
|
/* (5) Heures sup */
|
||||||
|
$sup_h = $equiTD > floatval($data['prof']['hoursToDo']) ? $equiTD - floatval($data['prof']['hoursToDo']) : 0;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/* (2) Initialize PDF
|
||||||
|
---------------------------------------------------------*/
|
||||||
|
/* (1) Get Font default directory */
|
||||||
|
$defaultConfig = (new \Mpdf\Config\ConfigVariables())->getDefaults();
|
||||||
|
$fontDirs = $defaultConfig['fontDir'];
|
||||||
|
|
||||||
|
/* (2) Get Font data */
|
||||||
|
$defaultFontConfig = (new \Mpdf\Config\FontVariables())->getDefaults();
|
||||||
|
$fontData = $defaultFontConfig['fontdata'];
|
||||||
|
|
||||||
|
/* (3) Create PDF file */
|
||||||
|
$pdf = new \Mpdf\Mpdf([
|
||||||
|
'mode' => 'utf-8',
|
||||||
|
'defaultCssFile' => __PUBLIC__.'/css/pdf.css',
|
||||||
|
'tempDir' => __ROOT__.'/tmp',
|
||||||
|
'fontDir' => array_merge($fontDirs, [ __PUBLIC__.'/font/' ]),
|
||||||
|
'fontdata' => $fontData + [
|
||||||
|
'Fira Sans' => [
|
||||||
|
'R' => 'FiraSans-Regular.ttf'
|
||||||
|
]
|
||||||
|
],
|
||||||
|
'default_font' => 'Fira Sans'
|
||||||
|
]);
|
||||||
|
|
||||||
|
/* (4) Set PDF title */
|
||||||
|
$pdf->SetTitle("Fiche enseignant - $fullname ($date)");
|
||||||
|
|
||||||
|
/* (5) Store SVG */
|
||||||
|
$svg_warning = '<svg xmlns:svg="http://www.w3.org/2000/svg" xmlns="http://www.w3.org/2000/svg" height="10" width="10" viewBox="0 0 1792 1792">
|
||||||
|
<path d="m 1024,1375 v -190 q 0,-14 -9.5,-23.5 Q 1005,1152 992,1152 H 800 q -13,0 -22.5,9.5 -9.5,9.5 -9.5,23.5 v 190 q 0,14 9.5,23.5 9.5,9.5 22.5,9.5 h 192 q 13,0 22.5,-9.5 9.5,-9.5 9.5,-23.5 z m -2,-374 18,-459 q 0,-12 -10,-19 -13,-11 -24,-11 H 786 q -11,0 -24,11 -10,7 -10,21 l 17,457 q 0,10 10,16.5 10,6.5 24,6.5 h 185 q 14,0 23.5,-6.5 9.5,-6.5 10.5,-16.5 z m -14,-934 768,1408 q 35,63 -2,126 -17,29 -46.5,46 -29.5,17 -63.5,17 H 128 Q 94,1664 64.5,1647 35,1630 18,1601 -19,1538 16,1475 L 784,67 q 17,-31 47,-49 30,-18 65,-18 35,0 65,18 30,18 47,49 z" style="fill: #ea4b35" />
|
||||||
|
</svg>';
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/* (3) Set Header|Footer
|
||||||
|
---------------------------------------------------------*/
|
||||||
|
/* (1) Set Header content (Left, Right) */
|
||||||
|
$header_content = [
|
||||||
|
'C' => [ 'color' => '#aaa', 'content' => "Fiche enseignant $fullname" ],
|
||||||
|
'line' => 1
|
||||||
|
];
|
||||||
|
|
||||||
|
/* (2) Apply Header */
|
||||||
|
$pdf->setHeader([
|
||||||
|
'odd' => $header_content,
|
||||||
|
'even' => $header_content
|
||||||
|
]);
|
||||||
|
|
||||||
|
/* (1) Set Footer content (Left, Right) */
|
||||||
|
$footer_content = [
|
||||||
|
'L' => [ 'color' => '#aaa', 'content' => "Généré le $date" ],
|
||||||
|
'R' => [ 'color' => '#aaa', 'content' => 'Page {PAGENO} sur {nbpg}' ],
|
||||||
|
'line' => 1
|
||||||
|
];
|
||||||
|
|
||||||
|
/* (2) Apply Footer */
|
||||||
|
$pdf->setFooter([
|
||||||
|
'odd' => $footer_content,
|
||||||
|
'even' => $footer_content
|
||||||
|
]);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/* (4) Page 1 - Récapitulatif
|
||||||
|
---------------------------------------------------------*/
|
||||||
|
/* (1) Initialize page */
|
||||||
|
$pdf->AddPage();
|
||||||
|
|
||||||
|
/* (2) Write content */
|
||||||
|
$pdf->WriteHTML('<br>
|
||||||
|
<h3>1. Récapitulatif</h3>
|
||||||
|
<hr>
|
||||||
|
|
||||||
|
<article>
|
||||||
|
<p>
|
||||||
|
La liste des informations récapitulative est basée sur les données de tous les enseignants enregistrés à ce jour.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<blockquote>
|
||||||
|
Il est à noter qu\'elle contient les données générées au '.$date.'. Elle peut ne plus être à jour.
|
||||||
|
</blockquote>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
Si un problème persiste veuillez contacter les responsables à l\'addresse mail suivante <span style="color: red;"><mail_display_error></span>.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<br><br><br>
|
||||||
|
|
||||||
|
|
||||||
|
<table>
|
||||||
|
<thead>
|
||||||
|
<tr>
|
||||||
|
<td class="color ac">Donnée</td>
|
||||||
|
<td class="color ac">Valeur</td>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
|
||||||
|
<tbody>
|
||||||
|
<tr>
|
||||||
|
<td class="ar">Heures à faire</td>
|
||||||
|
<td>'.$data['prof']['hoursToDo'].' h</td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<tr>
|
||||||
|
<td class="ar">Equivalents TD</td>
|
||||||
|
<td>'.$data['prof']['equiTD'].' h</td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<tr>
|
||||||
|
<td class="ar">Heures programmées</td>
|
||||||
|
<td>'.$total_h.' h</td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<tr>
|
||||||
|
<td class="ar">Heures manquantes</td>
|
||||||
|
<td>'.( $missing_h>0 ? "$svg_warning $missing_h" : $missing_h).' h</td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<tr>
|
||||||
|
<td class="ar">Heures sup.</td>
|
||||||
|
<td>'.$sup_h.' h</td>
|
||||||
|
</tr>
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
</article>
|
||||||
|
|
||||||
|
');
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/* (5) Page 2 - Enseignements
|
||||||
|
---------------------------------------------------------*/
|
||||||
|
/* (1) Initialize page */
|
||||||
|
$pdf->AddPage();
|
||||||
|
|
||||||
|
/* (2) Write content */
|
||||||
|
$pdf->WriteHTML('<br>
|
||||||
|
<h3>2. Enseignements</h3>
|
||||||
|
<hr>
|
||||||
|
|
||||||
|
<article>
|
||||||
|
<p>
|
||||||
|
La liste des enseignements générée dans le tableau ci-dessous est uniquement à titre informatif et n\'est pas contractuelle.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<blockquote>
|
||||||
|
Il est à noter qu\'elle contient les données générées au '.$date.'. Elle peut ne plus être à jour.
|
||||||
|
</blockquote>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
Si un problème persiste veuillez contacter les responsables à l\'addresse mail suivante <span style="color: red;"><mail_display_error></span>.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<br><br><br>
|
||||||
|
|
||||||
|
<table>
|
||||||
|
<thead>
|
||||||
|
<tr>
|
||||||
|
<th colspan="5" class="ac">Liste des enseignements programmés</th>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="color ac">Code UE</td>
|
||||||
|
<td class="color ac">Nom UE</td>
|
||||||
|
<td class="color ac">Prestation</td>
|
||||||
|
<td class="color ac">volume horaire</td>
|
||||||
|
<td class="color ac">formations</td>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
|
||||||
|
<tbody>');
|
||||||
|
|
||||||
|
/* (3) List Cours */
|
||||||
|
foreach($data['cours'] as $kc=>$c){
|
||||||
|
$pdf->WriteHTML('<tr>
|
||||||
|
<td>'.$c['code'].'</td>
|
||||||
|
<td>'.$c['label'].'</td>
|
||||||
|
<td>Cours</td>
|
||||||
|
<td>'.$c['volume'].' heures</td>
|
||||||
|
<td><ul>');
|
||||||
|
|
||||||
|
// print formations
|
||||||
|
foreach($c['formations'] as $f)
|
||||||
|
if( isset($data['form'][$f]) )
|
||||||
|
$pdf->WriteHTML('<li>'.$data['form'][$f]['labelForm'].'</li>');
|
||||||
|
|
||||||
|
$pdf->WriteHTML('</ul></td></tr>');
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/* (4) List TD */
|
||||||
|
foreach($data['td'] as $kc=>$c){
|
||||||
|
$pdf->WriteHTML('<tr>
|
||||||
|
<td>'.$c['code'].'</td>
|
||||||
|
<td>'.$c['label'].'</td>
|
||||||
|
<td>TD</td>
|
||||||
|
<td>'.$c['volume'].' heures</td>
|
||||||
|
<td><ul>');
|
||||||
|
|
||||||
|
// print formations
|
||||||
|
foreach($c['formations'] as $f)
|
||||||
|
if( isset($data['form'][$f]) )
|
||||||
|
$pdf->WriteHTML('<li>'.$data['form'][$f]['labelForm'].'</li>');
|
||||||
|
|
||||||
|
$pdf->WriteHTML('</ul></td></tr>');
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/* (5) List TP */
|
||||||
|
foreach($data['tp'] as $kc=>$c){
|
||||||
|
$pdf->WriteHTML('<tr>
|
||||||
|
<td>'.$c['code'].'</td>
|
||||||
|
<td>'.$c['label'].'</td>
|
||||||
|
<td>TP</td>
|
||||||
|
<td>'.$c['volume'].' heures</td>
|
||||||
|
<td><ul>');
|
||||||
|
|
||||||
|
// print formations
|
||||||
|
foreach($c['formations'] as $f)
|
||||||
|
if( isset($data['form'][$f]) )
|
||||||
|
$pdf->WriteHTML('<li>'.$data['form'][$f]['labelForm'].'</li>');
|
||||||
|
|
||||||
|
$pdf->WriteHTML('</ul></td></tr>');
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/* (6) End HTML */
|
||||||
|
$pdf->WriteHTML('</tr>
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
</article>');
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/* (N) Print out PDF file
|
||||||
|
---------------------------------------------------------*/
|
||||||
|
return $pdf->Output("Fiche enseignant - $fullname ($date)", 'S');
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -224,6 +224,19 @@
|
||||||
"matches": { "des": "Matching professor UID(s)", "typ": "array<id>" }
|
"matches": { "des": "Matching professor UID(s)", "typ": "array<id>" }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
"pdf": {
|
||||||
|
|
||||||
|
"GET": {
|
||||||
|
"des": "Get a professor's fiche",
|
||||||
|
"per": [["cas_admin"]],
|
||||||
|
"par": {
|
||||||
|
"URL0": { "des": "Optional professor UID.", "typ": "id", "ren": "prof_id" }
|
||||||
|
},
|
||||||
|
"opt": { "download": true }
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -1,231 +0,0 @@
|
||||||
<?php require_once '../vendor/autoload.php';
|
|
||||||
|
|
||||||
|
|
||||||
/* (1) Initialize PDF
|
|
||||||
---------------------------------------------------------*/
|
|
||||||
/* (1) Get Font default directory */
|
|
||||||
$defaultConfig = (new Mpdf\Config\ConfigVariables())->getDefaults();
|
|
||||||
$fontDirs = $defaultConfig['fontDir'];
|
|
||||||
|
|
||||||
/* (2) Get Font data */
|
|
||||||
$defaultFontConfig = (new Mpdf\Config\FontVariables())->getDefaults();
|
|
||||||
$fontData = $defaultFontConfig['fontdata'];
|
|
||||||
|
|
||||||
/* (3) Create PDF file */
|
|
||||||
$pdf = new \Mpdf\Mpdf([
|
|
||||||
'mode' => 'utf-8',
|
|
||||||
'defaultCssFile' => __PUBLIC__.'/css/pdf.css',
|
|
||||||
'tempDir' => __ROOT__.'/tmp',
|
|
||||||
'fontDir' => array_merge($fontDirs, [ __PUBLIC__.'/font/' ]),
|
|
||||||
'fontdata' => $fontData + [
|
|
||||||
'Fira Sans' => [
|
|
||||||
'R' => 'FiraSans-Regular.ttf'
|
|
||||||
]
|
|
||||||
],
|
|
||||||
'default_font' => 'Fira Sans'
|
|
||||||
]);
|
|
||||||
|
|
||||||
/* (4) Set PDF title */
|
|
||||||
$pdf->SetTitle('Some PDF title');
|
|
||||||
|
|
||||||
/* (5) Store SVG */
|
|
||||||
$svg_warning = '<svg xmlns:svg="http://www.w3.org/2000/svg" xmlns="http://www.w3.org/2000/svg" height="10" width="10" viewBox="0 0 1792 1792">
|
|
||||||
<path d="m 1024,1375 v -190 q 0,-14 -9.5,-23.5 Q 1005,1152 992,1152 H 800 q -13,0 -22.5,9.5 -9.5,9.5 -9.5,23.5 v 190 q 0,14 9.5,23.5 9.5,9.5 22.5,9.5 h 192 q 13,0 22.5,-9.5 9.5,-9.5 9.5,-23.5 z m -2,-374 18,-459 q 0,-12 -10,-19 -13,-11 -24,-11 H 786 q -11,0 -24,11 -10,7 -10,21 l 17,457 q 0,10 10,16.5 10,6.5 24,6.5 h 185 q 14,0 23.5,-6.5 9.5,-6.5 10.5,-16.5 z m -14,-934 768,1408 q 35,63 -2,126 -17,29 -46.5,46 -29.5,17 -63.5,17 H 128 Q 94,1664 64.5,1647 35,1630 18,1601 -19,1538 16,1475 L 784,67 q 17,-31 47,-49 30,-18 65,-18 35,0 65,18 30,18 47,49 z" style="fill: #ea4b35" />
|
|
||||||
</svg>';
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/* (2) Set Header|Footer
|
|
||||||
---------------------------------------------------------*/
|
|
||||||
/* (1) Set Header content (Left, Right) */
|
|
||||||
$header_content = [
|
|
||||||
'C' => [ 'color' => '#aaa', 'content' => 'Fiche enseignant Sophie Gouardères (sgouarde)' ],
|
|
||||||
'line' => 1
|
|
||||||
];
|
|
||||||
|
|
||||||
/* (2) Apply Header */
|
|
||||||
$pdf->setHeader([
|
|
||||||
'odd' => $header_content,
|
|
||||||
'even' => $header_content
|
|
||||||
]);
|
|
||||||
|
|
||||||
/* (1) Set Footer content (Left, Right) */
|
|
||||||
$footer_content = [
|
|
||||||
'L' => [ 'color' => '#aaa', 'content' => 'Généré le @date_création' ],
|
|
||||||
'R' => [ 'color' => '#aaa', 'content' => 'Page {PAGENO} sur {nbpg}' ],
|
|
||||||
'line' => 1
|
|
||||||
];
|
|
||||||
|
|
||||||
/* (2) Apply Footer */
|
|
||||||
$pdf->setFooter([
|
|
||||||
'odd' => $footer_content,
|
|
||||||
'even' => $footer_content
|
|
||||||
]);
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/* (3) Page 1 - Récapitulatif
|
|
||||||
---------------------------------------------------------*/
|
|
||||||
/* (1) Initialize page */
|
|
||||||
$pdf->AddPage();
|
|
||||||
|
|
||||||
/* (2) Write content */
|
|
||||||
$pdf->WriteHTML('<br>
|
|
||||||
<h3>1. Récapitulatif</h3>
|
|
||||||
<hr>
|
|
||||||
|
|
||||||
<article>
|
|
||||||
<p>
|
|
||||||
Mollitia quo ullam voluptas quia delectus nihil ab. (<a href="https://git.xdrm.io">cliquer ici</a>) Temporibus voluptatum et adipisci dolores aut ut. Aliquid et non quaerat ipsa accusantium quis doloribus minus. Omnis cupiditate iste id a quisquam sunt officia. Architecto ut id non et deleniti et. Veritatis in consectetur ut
|
|
||||||
</p>
|
|
||||||
|
|
||||||
<blockquote>
|
|
||||||
Mollitia quo ullam voluptas quia delectus nihil ab. Temporibus voluptatum et adipisci dolores aut ut. Aliquid et non quaerat ipsa accusantium quis doloribus minus. Omnis cupiditate iste id a quisquam sunt officia. Architecto ut id non et deleniti et. Veritatis in consectetur ut
|
|
||||||
</blockquote>
|
|
||||||
|
|
||||||
<p class="warning">
|
|
||||||
Mollitia quo ullam voluptas quia delectus nihil ab. (<a href="https://git.xdrm.io">cliquer ici</a>) Temporibus voluptatum et adipisci dolores aut ut. Aliquid et non quaerat ipsa accusantium quis doloribus minus. Omnis cupiditate iste id a quisquam sunt officia. Architecto ut id non et deleniti et. Veritatis in consectetur ut
|
|
||||||
</p>
|
|
||||||
|
|
||||||
|
|
||||||
<table>
|
|
||||||
<thead>
|
|
||||||
<tr>
|
|
||||||
<td class="color ac">Donnée</td>
|
|
||||||
<td class="color ac">Valeur</td>
|
|
||||||
</tr>
|
|
||||||
</thead>
|
|
||||||
|
|
||||||
<tbody>
|
|
||||||
<tr>
|
|
||||||
<td class="ar">Heures à faire</td>
|
|
||||||
<td>192 h</td>
|
|
||||||
</tr>
|
|
||||||
|
|
||||||
<tr>
|
|
||||||
<td class="ar">Equivalents TD</td>
|
|
||||||
<td>241.41 h</td>
|
|
||||||
</tr>
|
|
||||||
|
|
||||||
<tr>
|
|
||||||
<td class="ar">Heures programmées</td>
|
|
||||||
<td>217.5 h</td>
|
|
||||||
</tr>
|
|
||||||
|
|
||||||
<tr>
|
|
||||||
<td class="ar">Heures manquantes</td>
|
|
||||||
<td>'.$svg_warning.' 10 h </td>
|
|
||||||
</tr>
|
|
||||||
|
|
||||||
<tr>
|
|
||||||
<td class="ar">Heures sup.</td>
|
|
||||||
<td>0</td>
|
|
||||||
</tr>
|
|
||||||
</tbody>
|
|
||||||
</table>
|
|
||||||
</article>
|
|
||||||
|
|
||||||
');
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/* (4) Page 2 - Enseignements
|
|
||||||
---------------------------------------------------------*/
|
|
||||||
/* (1) Initialize page */
|
|
||||||
$pdf->AddPage();
|
|
||||||
|
|
||||||
/* (2) Write content */
|
|
||||||
$pdf->WriteHTML('<br>
|
|
||||||
<h3>2. Enseignements</h3>
|
|
||||||
<hr>
|
|
||||||
|
|
||||||
<article>
|
|
||||||
<p>
|
|
||||||
Mollitia quo ullam voluptas quia delectus nihil ab. (<a href="https://git.xdrm.io">cliquer ici</a>) Temporibus voluptatum et adipisci dolores aut ut. Aliquid et non quaerat ipsa accusantium quis doloribus minus. Omnis cupiditate iste id a quisquam sunt officia. Architecto ut id non et deleniti et. Veritatis in consectetur ut
|
|
||||||
</p>
|
|
||||||
|
|
||||||
<blockquote>
|
|
||||||
Mollitia quo ullam voluptas quia delectus nihil ab. Temporibus voluptatum et adipisci dolores aut ut. Aliquid et non quaerat ipsa accusantium quis doloribus minus. Omnis cupiditate iste id a quisquam sunt officia. Architecto ut id non et deleniti et. Veritatis in consectetur ut
|
|
||||||
</blockquote>
|
|
||||||
|
|
||||||
<p>
|
|
||||||
Mollitia quo ullam voluptas quia delectus nihil ab. (<a href="https://git.xdrm.io">cliquer ici</a>) Temporibus voluptatum et adipisci dolores aut ut. Aliquid et non quaerat ipsa accusantium quis doloribus minus. Omnis cupiditate iste id a quisquam sunt officia. Architecto ut id non et deleniti et. Veritatis in consectetur ut
|
|
||||||
</p>
|
|
||||||
|
|
||||||
<br><br><br>
|
|
||||||
|
|
||||||
<table>
|
|
||||||
<thead>
|
|
||||||
<tr>
|
|
||||||
<th colspan="5" class="ac">Liste des enseignements programmés</th>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td class="color ac">Code UE</td>
|
|
||||||
<td class="color ac">Nom UE</td>
|
|
||||||
<td class="color ac">Prestation</td>
|
|
||||||
<td class="color ac">volume horaire</td>
|
|
||||||
<td class="color ac">formations</td>
|
|
||||||
</tr>
|
|
||||||
</thead>
|
|
||||||
|
|
||||||
<tbody>
|
|
||||||
<tr>
|
|
||||||
<td>T0XALA2V</td>
|
|
||||||
<td>Algorithmique avancée</td>
|
|
||||||
<td>Cours</td>
|
|
||||||
<td>13.5 heures</td>
|
|
||||||
<td><ul>
|
|
||||||
<li>MIASHS</li>
|
|
||||||
<li>L1 INFO (S2)</li>
|
|
||||||
</ul></td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td>T0XALA2V</td>
|
|
||||||
<td>Algorithmique avancée</td>
|
|
||||||
<td>TD</td>
|
|
||||||
<td>22 heures</td>
|
|
||||||
<td><ul>
|
|
||||||
<li>L1 INFO (S2)</li>
|
|
||||||
</ul></td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td>T0XALA2V</td>
|
|
||||||
<td>Algorithmique avancée</td>
|
|
||||||
<td>TP</td>
|
|
||||||
<td>5 heures</td>
|
|
||||||
<td><ul>
|
|
||||||
<li>MIASHS</li>
|
|
||||||
<li>L1 INFO (S2)</li>
|
|
||||||
<li>L2 INFO (S2)</li>
|
|
||||||
</ul></td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td>T0MSAP3U</td>
|
|
||||||
<td>Algorithmique et programmation avancée</td>
|
|
||||||
<td>TP</td>
|
|
||||||
<td>12 heures</td>
|
|
||||||
<td><ul>
|
|
||||||
<li>MIASHS</li>
|
|
||||||
<li>L1 INFO (S2)</li>
|
|
||||||
<li>L2 INFO (S2)</li>
|
|
||||||
</ul></td>
|
|
||||||
</tr>
|
|
||||||
</tbody>
|
|
||||||
</table>
|
|
||||||
</article>
|
|
||||||
|
|
||||||
|
|
||||||
');
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/* (N) Print out PDF file
|
|
||||||
---------------------------------------------------------*/
|
|
||||||
|
|
||||||
$pdf->Output();
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue