pdf_resultados_split.php 9.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281
  1. <?php
  2. /* AJAX
  3. * Selecciona los datos de la carrera
  4. * Recibe:
  5. * id - ID de la carrera
  6. * Return:
  7. * resultado o cadena de error
  8. */
  9. require_once("../../include/constantes.php");
  10. require_once("../../include/nocache.php");
  11. require_once("../../include/util.php");
  12. require_once("../../include/bd_pdo.php");
  13. include_once('../../include/xTemplate/xtemplate.class.php'); // including mpdf.php
  14. include_once('../../include/mpdf/autoload.php'); // including mpdf.php
  15. $pag = "../resultados_subir.php";
  16. function getTestimonio($pts){
  17. if($pts <= 45.3){
  18. return "No Satisfactorio";
  19. }else if($pts <=59.8){
  20. return "Satisfactorio";
  21. }else if($pts <=74.2){
  22. return "Sobresaliente";
  23. }
  24. return "Excelencia";
  25. }
  26. //--- Objeto para validar usuario. El id de usuario lo lee desde sesión
  27. if(!isset($_POST["nombre"], $_POST["apellidos"], $_POST["folio"])){
  28. header("Location: ".$pag."?error=0");
  29. exit();
  30. }else{
  31. $firma = $_POST["firma"];//array de ids
  32. $puesto = $_POST["puesto"];//arreglo de textos de puestos
  33. //--Firmas
  34. $i = 0;
  35. $numFirmas = 2;
  36. $stmt = $pdo->prepare('Select * from fs_constanciafirma(:id, NULL )');//firmas
  37. while($i < $numFirmas){
  38. $stmt->bindParam(":id", $firma[$i]);
  39. if(!$stmt->execute()){
  40. $pdo->rollBack();
  41. header("Location:".$pag."?error=2");
  42. //print_r($stmt->errorInfo());
  43. exit();
  44. }
  45. $firma_rs = $stmt->fetch();
  46. $stmt->closeCursor();
  47. $firmasArr[] = array("id"=>$firma_rs["ConstanciaFirma_id"] ,"grado"=>$firma_rs["ConstanciaFirma_grado"] ,
  48. "nombre"=> $firma_rs["ConstanciaFirma_nombre"] /*mb_convert_case(mb_strtolower($firma_rs["ConstanciaFirma_nombre"]), MB_CASE_TITLE, "UTF-8")*/,
  49. "puesto"=>$puesto[$i], "firma"=> $firma_rs["ConstanciaFirma_imagen"]
  50. );
  51. $i++;
  52. }
  53. //-- Footer
  54. $xtpl_footer = new XTemplate('../tpl/carta_footer.tpl.html');
  55. $xtpl_footer->assign("FECHA_CARTA", $fecha_carta);
  56. //$xtpl_footer->assign("FIRMA", "../../img/firmas/".$firmasArr[0]["firma"]);
  57. $xtpl->assign("FIRMA", "../../img/firmas/blanco.png");
  58. $xtpl_footer->assign("NOMBRE", $firmasArr[0]["grado"]." ".$firmasArr[0]["nombre"]);
  59. $xtpl_footer->assign("PUESTO", $firmasArr[0]["puesto"]);
  60. $xtpl_footer->assign("DIR", "left");
  61. $xtpl_footer->parse("main.firma");
  62. //$xtpl_footer->assign("FIRMA", "../../img/firmas/".$firmasArr[1]["firma"]);
  63. $xtpl->assign("FIRMA", "../../img/firmas/blanco.png");
  64. $xtpl_footer->assign("NOMBRE", $firmasArr[1]["grado"]." ".$firmasArr[1]["nombre"]);
  65. $xtpl_footer->assign("PUESTO", $firmasArr[1]["puesto"]);
  66. $xtpl_footer->assign("DIR", "right");
  67. $xtpl_footer->parse("main.firma");
  68. $xtpl_footer->parse("main");
  69. //-------
  70. $fecha_carta = "FECHA DE LA CARTA";
  71. if(isset($_POST["fecha_carta"]))
  72. $fecha_carta = fechaGuion(trim(filter_input(INPUT_POST, "fecha_carta", FILTER_SANITIZE_STRING,array('flags' => FILTER_FLAG_STRIP_LOW))));//limpia texto
  73. else
  74. $fecha_carta = date("Y-m-d");
  75. $fecha_carta = fechaTexto($fecha_carta);
  76. $alumnoArr = array();
  77. $al = 0;
  78. $row = 1;
  79. $repetido = 0;
  80. $fecha = trim(filter_input(INPUT_POST, "fecha"));//fecha como texto
  81. $folio = $_POST["folio"];
  82. $clave = $_POST["clave"];
  83. $nombre = $_POST["nombre"];
  84. $apellidos = $_POST["apellidos"];
  85. $res = array();
  86. $res[] = $_POST["res1"];
  87. $res[] = $_POST["res2"];
  88. $res[] = $_POST["res3"];
  89. $res[] = $_POST["res4"];
  90. $res[] = $_POST["res5"];
  91. $res[] = $_POST["total"];
  92. $defaultConfig = (new Mpdf\Config\ConfigVariables())->getDefaults();
  93. $fontDirs = $defaultConfig['fontDir'];
  94. $defaultFontConfig = (new Mpdf\Config\FontVariables())->getDefaults();
  95. $fontData = $defaultFontConfig['fontdata'];
  96. $defaultConfig = (new Mpdf\Config\ConfigVariables())->getDefaults();
  97. $fontDirs = $defaultConfig['fontDir'];
  98. $defaultFontConfig = (new Mpdf\Config\FontVariables())->getDefaults();
  99. $fontData = $defaultFontConfig['fontdata']+ [
  100. 'indivisa-display' => [
  101. 'R' => 'IndivisaDisplaySans-Regular.ttf',
  102. ],
  103. 'indivisa-title' => [
  104. 'R' => 'IndivisaDisplaySerif-RegularItalic.ttf',
  105. ],
  106. 'indivisa-text' => [
  107. 'R' => 'IndivisaTextSans-Regular.ttf',
  108. ]
  109. ];
  110. $stylesheet = "<style>";
  111. //$stylesheet .= file_get_contents('../../css/indivisa.css'); // external css
  112. $stylesheet .= file_get_contents('../css/resultados.css'); // external css
  113. $stylesheet .= "</style>";
  114. //----------- Archivos y zip ---
  115. $fecha_hoy = date("Y-m-d");
  116. $tmp_folder = "./zip/pdf_".fechaGuion($fecha_hoy);
  117. if (!file_exists($tmp_folder)) {
  118. mkdir($tmp_folder, 0777, true);
  119. }
  120. $zip = new ZipArchive();
  121. $zip_filename = "zip/resultadosEGC_".fechaGuion($fecha_hoy)."_".date("his").".zip";
  122. if ($zip->open($zip_filename, ZipArchive::CREATE)!==TRUE) {
  123. $pdo->rollBack();
  124. exit("cannot open <$zip_filename>\n");
  125. }
  126. $cuenta = count($apellidos);
  127. for($i =0; $i< count($apellidos); $i++){
  128. $mpdf = new \Mpdf\Mpdf([
  129. 'mode' => 'utf-8',
  130. 'format' => [215, 279],
  131. 'orientation' => 'P',
  132. 'margin_left' => 14,
  133. 'margin_right' => 14,
  134. 'margin_top' => 28,
  135. 'margin_header' => 7,
  136. 'margin_bottom' => 100,
  137. 'fontDir' => array_merge($fontDirs, [
  138. __DIR__ . '/../../fonts/indivisaFont/ttf',
  139. ]),
  140. 'fontdata' => $fontData,
  141. 'default_font' => 'indivisa-text'
  142. ]);
  143. $xtpl = new XTemplate('../tpl/carta_resultados.tpl.html');
  144. $num = $i+1;
  145. //$i=0;
  146. $xtpl->assign("DATO_TITULO", "Folio");
  147. $xtpl->assign("DATO_TEXTO", $folio[$i]);
  148. $xtpl->parse("main.dato");
  149. $xtpl->assign("DATO_TITULO", "Clave ULSA");
  150. $xtpl->assign("DATO_TEXTO", $clave[$i]);
  151. $xtpl->parse("main.dato");
  152. $xtpl->assign("DATO_TITULO", "Nombre del sustentante");
  153. $xtpl->assign("DATO_TEXTO", $nombre[$i]." ".$apellidos[$i]);
  154. $xtpl->parse("main.dato");
  155. if($fecha != ""){
  156. $xtpl->assign("DATO_TITULO", "Fecha de aplicación");
  157. $xtpl->assign("DATO_TEXTO", $fecha);
  158. $xtpl->parse("main.dato");
  159. }
  160. $xtpl->assign("DATO_TITULO", "Institución de Educación Superior (IES)");
  161. $xtpl->assign("DATO_TEXTO", "Universidad La Salle México");
  162. $xtpl->parse("main.dato");
  163. $xtpl->assign("RES", $res[0][$i]);
  164. $xtpl->parse("main.res");
  165. $xtpl->assign("RES", $res[1][$i]);
  166. $xtpl->parse("main.res");
  167. $xtpl->assign("RES", $res[2][$i]);
  168. $xtpl->parse("main.res");
  169. $xtpl->assign("RES", $res[3][$i]);
  170. $xtpl->parse("main.res");
  171. $xtpl->assign("RES", $res[4][$i]);
  172. $xtpl->parse("main.res");
  173. $xtpl->assign("RES", getTestimonio($res[5][$i]));
  174. $xtpl->parse("main.res.bold");
  175. $xtpl->parse("main.res");
  176. $cuenta--;
  177. //if($cuenta > 0) $xtpl->parse("main.pagebreak");
  178. $xtpl->parse("main");
  179. $carta = $xtpl->text("main");
  180. /*echo $stylesheet;
  181. $xtpl->out("main"); exit();*/
  182. $mpdf->SHYlang = 'es';
  183. $mpdf-> SetTitle('Resultados -' . $nombre[$i]." ".$apellidos[$i]);
  184. $mpdf-> SetAuthor('Facultad de Ingeniería. © Universidad La Salle A.C. '.date("Y").' Todos los derechos Reservados.');
  185. $mpdf->SetHTMLHeader('<img src="../../img/logopdf.png" width="40mm">');//se pone como fondo
  186. $mpdf->SetHTMLFooter($xtpl_footer->text("main"));
  187. $mpdf->WriteHTML($stylesheet);
  188. $mpdf->WriteHTML($carta);
  189. //$mpdf->Output("reporteEGC.pdf", 'I');
  190. $mpdf->SetProtection(array('print', 'print-highres'), '', md5(time()));
  191. $mpdf->Output($tmp_folder."/resultado_".$num.".pdf", 'F');
  192. $zip->addFile(
  193. $tmp_folder."/resultado_".$num.".pdf",
  194. "egc_".fechaGuion($fecha_hoy)."/".$folio[$i]."_".$clave[$i].".pdf"
  195. );
  196. $num++;
  197. }
  198. //ZIP
  199. if($zip->numFiles<=0){
  200. $pdo->rollBack();
  201. echo "Error al guardar en el zip";
  202. $zip->close();
  203. unlink($zip_filename);
  204. exit();
  205. }
  206. $zip->close();
  207. removeFolder($tmp_folder);
  208. header("Content-Type: application/zip");
  209. header("Content-Disposition: attachment; filename=".basename($zip_filename));
  210. header("Pragma: no-cache");
  211. header("Expires: 0");
  212. ob_end_clean();
  213. flush();
  214. readfile($zip_filename);
  215. //unlink($zip_filename);
  216. }
  217. function removeFolder($folderName) {
  218. if (is_dir($folderName))
  219. $folderHandle = opendir($folderName);
  220. if (!$folderHandle)
  221. return false;
  222. while($file = readdir($folderHandle)) {
  223. if ($file != "." && $file != "..") {
  224. if (!is_dir($folderName."/".$file))
  225. unlink($folderName."/".$file);
  226. else
  227. removeFolder($folderName.'/'.$file);
  228. }
  229. }
  230. closedir($folderHandle);
  231. rmdir($folderName);
  232. return true;
  233. }
  234. ?>