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 [email protected].
Para publicar una entrada en este grupo, envía un correo electrónico a
[email protected].
Visita este grupo en http://groups.google.com/group/cakephp-es.
Para obtener más opciones, visita https://groups.google.com/d/optout.