Has visto este plugin? https://github.com/FriendsOfCake/CakePdf
Te va a hacer feliz si quieres generar dinámicamente PDFs desde tu aplicación. Saludos! On Wednesday, September 17, 2014 5:10:15 PM UTC+1, JHONY JAVIER BURBANO ROBLES wrote: > > Buenos Dias > > Espero se encuentren bien, quisiera pedirles un favor, si me pueden ayudar > con mostrar una informacion en un pdf. > la duda es la Siguiente. tengo una accion en mi controlador y la vista de > esa accion para que se genere el pdf eso me funciona, Lo que no me esta > funcionando en mi VISTA es el foreach. la verdad eh investigado y hecho > varios formas de las que muestran, pero no me ha funcionado, la primera > parte de la variable $html si me muestra datos, pero lo que contiene el > foreach no. y ya eh hecho un debug y si me esta trayendo todo, pero no me > muestra nada del foreach en el pdf. si me pueden ayudar con esta duda se lo > agradezco > > > CONTROLADOR > > public function ver($encabezado = NULL){ > > if (!$encabezado) > { > $this->Session->setFlash('no has seleccionado ningun > pdf.'); > $this->redirect(array('action'=>'index')); > } > $desarrolloordendias = $this->Detalleordendia->find('list'); > $this->Detalleordendia->recursive=-1; > $detalleordendias = > $this->Detalleordendia->find("all",array('fields',array('Detalleordendia.detalleplantilla_id'), > > "conditions"=>array('Detalleordendia.encabezadoordendia_id'=>$encabezado) > )); > foreach ($detalleordendias as $key => $value) { > > $variable=$this->requestAction('detalleplantillas/lists', > array('ordendia'=>$value['Detalleordendia']['detalleplantilla_id'])); > $detalleordendias[$key]['detalleordendia'] = > $variable; > $varsub = > $this->requestAction('subpuntos/lists',array('ordendia'=>$value['Detalleordendia']['id'])); > $detalleordendias[$key]['subpuntos'] = $varsub; > } > > $nomencab = > $this->Detalleordendia->Encabezadoordendia->read(null, $encabezado); > $this->set('variable', $variable); > $this->set('nomencab', $nomencab); > $this->set('encabezado',$encabezado); > $this->set('detalleordendias',$detalleordendias); > $this->layout = 'pdf'; //esto usara el layout pdf.ctp > $this->render(); > } > > > VISTA > > <?php > App::import('Vendor','tcpdf/tcpdf'); > ob_clean(); > // create new PDF document > $pdf = new TCPDF(PDF_PAGE_ORIENTATION, PDF_UNIT, > PDF_PAGE_FORMAT, true, 'UTF-8', false); > // set document information > $ht=''; > $pdf->SetCreator(PDF_CREATOR); > $pdf->SetAuthor('Nicola Asuni'); > $pdf->SetTitle('TCPDF Example 001'); > $pdf->SetSubject('TCPDF Tutorial'); > $pdf->SetKeywords('TCPDF, PDF, example, test, guide'); > // set default header data > $titulo =' Convocatoria de '; > $pdf->SetHeaderData(PDF_HEADER_LOGO, PDF_HEADER_LOGO_WIDTH, > $titulo, > PDF_HEADER_STRING, array(30,64,255), > array(100,64,128)); > $pdf->setFooterData($tc=array(0,64,0), $lc=array(0,64,128)); > > // set header and footer fonts > $pdf->setHeaderFont(Array(PDF_FONT_NAME_MAIN, '', > PDF_FONT_SIZE_MAIN)); > $pdf->setFooterFont(Array(PDF_FONT_NAME_DATA, '', > PDF_FONT_SIZE_DATA)); > > // set default monospaced font > $pdf->SetDefaultMonospacedFont(PDF_FONT_MONOSPACED); > > //set margins > $pdf->SetMargins(PDF_MARGIN_LEFT, PDF_MARGIN_TOP, > PDF_MARGIN_RIGHT); > $pdf->SetHeaderMargin(PDF_MARGIN_HEADER); > $pdf->SetFooterMargin(PDF_MARGIN_FOOTER); > > //set auto page breaks > $pdf->SetAutoPageBreak(TRUE, PDF_MARGIN_BOTTOM); > > //set image scale factor > $pdf->setImageScale(PDF_IMAGE_SCALE_RATIO); > > //set some language-dependent strings > // $pdf->setLanguageArray($l); > > // --------------------------------------------------------- > > // set default font subsetting mode > $pdf->setFontSubsetting(true); > > // Set font > // dejavusans is a UTF-8 Unicode font, if you only need to > // print standard ASCII chars, you can use core fonts like > // helvetica or times to reduce file size. > $pdf->SetFont('dejavusans', '', 14, '', true); > > // Add a page > // This method has several options, check the source code > > $pdf->AddPage(); > > // set text shadow effect > $pdf->setTextShadow(array('enabled'=>true, 'depth_w'=>0.2, > 'depth_h'=>0.2, 'color'=>array(196,196, > 196), 'opacity'=>1, 'blend_mode'=> > 'Normal')); > > $html = > '<div class="container"> > <div class="panel-body"> > <div class="col-md-12" style="text-align:left;"> > <label style="font-size:16px; "> Fecha: </label> <i > style="font-style:oblique; font-size:14 > ">'.$nomencab['Encabezadoordendia']['fecha'].'</i>'.' > <br> > <label style="font-size:16px;"> Número del Orden del Día: > </label> <i style="font-style:oblique; font-size:14 > ">'.$nomencab['Encabezadoordendia']['numero'].' </i>'.' > <br> > <label style="font-size:16px;"> Hora del Orden del > Día: </label> <i style="font-style:oblique; font-size:14 > ">'.$nomencab['Encabezadoordendia']['hora'].' </i>'.' > <br> <br> > </div> > <br > <div class="col-md-8" > > <ul class="list-unstyled text-left" >' > ; > > foreach ($detalleordendias as $detalleordendia){ > foreach ($detalleordendia['detalleordendia'] as $deta){ > $dd=$deta["Detalleplantilla"]["nompunto"]; > $ht.='<li><strong>'. $dd.'</strong></li>' ; > foreach ($detalleordendia['subpuntos'] as $sub){ > $ht.=' <ul class="list-unstyled">'; > > $ht.='<li> » '.$sub["Subpunto"]["nomsubpunto"].'</li> > </ul>'; > } > } > > } > > $htmlfin=' </ul> > </div> > > </div> > '; > > // output the HTML content > $pdf->writeHTML($html,$ht,$htmlfin, true, false, true, false, ''); > > > > // --------------------------------------------------------- > // $pdf->Cell(55, 5, 'Date:'); > // Close and output PDF document > // This method has several options, check the source code > > $pdf->Output('example_001.pdf', 'I'); > exit; > //=========================================================== > > // END OF FILE > //=========================================================== > > ?> > > El servicio de correo misena es soportado tecnológicamente por © Google y > ofrecido por el Servicio Nacional de Aprendizaje – SENA de manera gratuita > a todos los colombianos y en especial a los aprendices e instructores de > Programas de Formación Titulada y Complementaria. Los contenidos, textos, > imágenes, archivos y puntos de vista enviados en este mensaje son > responsabilidad exclusiva del remitente y no reflejan ni comprometen > oficialmente a la institución. No se autoriza el uso de esta herramienta > para el intercambio de correos masivos, cadenas o spam, ni de mensajes > ofensivos, de carácter político, sexual o religioso, con fines de lucro, > con propósitos delictivos o cualquier otro mensaje que se considere > indebido o que vaya en contra de la Ley. > -- Has recibido este mensaje porque estás suscrito al grupo "CakePHP-es" de Grupos de Google. Para anular la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a cakephp-es+unsubscr...@googlegroups.com. Para publicar una entrada en este grupo, envía un correo electrónico a cakephp-es@googlegroups.com. Visita este grupo en http://groups.google.com/group/cakephp-es. Para obtener más opciones, visita https://groups.google.com/d/optout.