:::: MENU ::::

Generar PDF con PHP

PHP entre sus características primarias tiene la capacidad de generar archivos PDF, tiene funciones especificas para personalizar y crear estos archivos pero son muy dificiles de utilizar, para ello existe una clase llamada R&OS: pdf class el cual provee métodos muy potentes y simplificados para la creación de archivos PDF.

ros_pdf_class.png

Descarga
Puedes descargar los archivos de manera gratuita en pdfClassesAndFonts_009e.zip. La documentación la puedes encontrar en readme.pdf.

Primeros Pasos
En la distribución de esta clase vienen incluido dos archivos: class.ezpdf.php y class.pdf.php los cuales contienen todas las propiedades y métodos necesarios para crear documentos PDF, además de ello hay una carpeta llamada fonts en el cual vienen algunas fuentes que podemos utilizar en la generación de pdfs.

Luego para crear un archivo pdf el primer paso es incluir las clases con la siguiente linea.

include ('class.ezpdf.php');

El siguiente paso es crear una instancia de la clase Cezpdf con la cual manejaremos la creación de pdf. Entonces creamos un archivo llamado pdf01.php donde crearemos nuestro primer documento pdf.

<?php
include ('class.ezpdf.php');
$pdf = new Cezpdf();
$pdf->selectFont('fonts/Helvetica.afm');
$pdf->ezText('Mi primer pdf en PHP', 30);
$pdf->ezStream();
?>

Hemos empleado los métodos: selectFont para seleccionar la fuente con la que escribiremos los textos, ezText que permite agregar un texto con su respectivo tamaño de fuente y finalmente generamos el archivo con la función ezStream.

Opciones Avanzadas
Una de la opciones que tiene es la de incluir los datos del creador o autor en el archivo, esto lo podemos hacer pasando un array con los datos del creador a la función addInfo para ello creamos el archivo pdf02.php.

include('class.ezpdf.php');
$pdf =& new Cezpdf('a4');
$pdf->selectFont('fonts/courier.afm');
$datacreator = array (
					'Title'=>'Ejemplo PDF',
					'Author'=>'unijimpe',
					'Subject'=>'Ejemplo de PDF',
					'Creator'=>'unijimpe@hotmail.com',
					'Producer'=>'http://blog.unijimpe.net'
					);
$pdf->addInfo($datacreator);
$pdf->ezText("<b>Ejemplo de PDF en PHP</b>\n",20);
$pdf->ezText("Esta es una prueba de pdf\n",12);
$pdf->ezText("\n\n\n",10);
$pdf->ezText("<b>Fecha:</b> ".date("d/m/Y"),10);
$pdf->ezText("<b>Hora:</b> ".date("H:i:s")."\n\n",10);
$pdf->ezStream();

Finalmente veamos la creación de una tabla, para ello emplearemos el método ezTable el cual tiene dos parámetros, un array con con los datos a mostrar y un array con los títulos de la tabla, esto lo hacemos en el archivo pdf03.php.

<?php
include('class.ezpdf.php');
$pdf =& new Cezpdf('a4');
$pdf->selectFont('fonts/courier.afm');
$datacreator = array (
					'Title'=>'Ejemplo PDF',
					'Author'=>'unijimpe',
					'Subject'=>'PDF con Tablas',
					'Creator'=>'unijimpe@hotmail.com',
					'Producer'=>'http://blog.unijimpe.net'
					);
$pdf->addInfo($datacreator);

$data[] = array('num'=>1, 'mes'=>'Enero');
$data[] = array('num'=>2, 'mes'=>'Febrero');
$data[] = array('num'=>3, 'mes'=>'Marzo');
$data[] = array('num'=>4, 'mes'=>'Abril');
$data[] = array('num'=>5, 'mes'=>'Mayo');
$data[] = array('num'=>6, 'mes'=>'Junio');
$data[] = array('num'=>7, 'mes'=>'Julio');
$data[] = array('num'=>8, 'mes'=>'Agosto');
$data[] = array('num'=>9, 'mes'=>'Septiembre');
$data[] = array('num'=>10, 'mes'=>'Octubre');
$data[] = array('num'=>11, 'mes'=>'Noviembre');
$data[] = array('num'=>12, 'mes'=>'Diciembre');

$titles = array('num'=>'<b>Numero</b>', 'mes'=>'<b>Mes</b>');

$pdf->ezText("<b>Meses en PHP</b>\n",16);
$pdf->ezText("Listado de Meses\n",12);
$pdf->ezTable($data,$titles,'',$options );
$pdf->ezText("\n\n\n",10);
$pdf->ezText("<b>Fecha:</b> ".date("d/m/Y"),10);
$pdf->ezText("<b>Hora:</b> ".date("H:i:s")."\n\n",10);
$pdf->ezStream();
?>

Con lo cual obtenemos el siguiente resultado en nuestro browser.

ezpdf-demo.gif

Para concluir con este tema les dejo los archivos fuente con los ejemplos que hemos desarrollado es este posta para descarga.


404 Comentarios

  • Elizbeht |

    esto falto no se porque razon no se pegaria pero esto va antes de todo
    <?php
    $Pla=$_POST["placas"]; //es el campo que se jala del formulario para hacer la consulta
    error_reporting(E_ALL);
    set_time_limit(1800);

    include 'class.ezpdf.php';
    class Creport extends Cezpdf {
    var $reportContents = array();

    function

  • elvis |

    La respuesta de como hacer que el titulo a paresca en el centro


    $pdf->ezText("Texto que deceas mostrar\n",15,array('justification'=>'center'));

    Espero que les sirva tanto como a mi n_n

  • Claudia |

    Tengo un problema al generar el pdf, el texto que tiene acentos no se justifica, los acentos si se ven, el texto sin acentos si se justifica, el problema es justificar solo los parrafos con acentos..he intentado de todo y no puedo solucionarlo alguien tiene alguna sugerencia? es urgente.

  • steffani |

    hola! estoy trabajando en debian y al crear el pdf con esta libreria no me aparecen ningun tipo de texto, hasta dibuja la tablas pero no aparece el texto, que puedo hacer en este caso

  • yormary |

    hola muy bueno toda la informacion que contiene este foro.. Tengo una duda. les voy a explicar mas o menos como es el sistema que tengo, es un sistema de registro de suplencia (eventuales) quisiera que cuando el vaya a imprimir imprima un texto predeterminado osea como el contrato y que en un lugar especifico del contrato me imprima ejemplo: mediante la presente, cumplimos en informarle que la sra. ANA ROJAS cedula de indentidad 8.384.765 las letras en mayusculas es el registro de ese eventual.
    Necesito su ayuda por favor.

  • hilde |

    hola buenas tarde estoy ejecutando el ejemplo numero 1

    selectFont(‘fonts/Helvetica.afm’);
    $pdf->ezText(‘Mi primer pdf en PHP’, 30);
    $pdf->ezStream();
    ?>

    pero me da este error al tratar de abrirlo

    Warning: include(/opt/lampp/htdocs/class.ezpdf.php) [function.include]: failed to open stream: Permission denied in /opt/lampp/htdocs/pas.php on line 2

    Warning: include() [function.include]: Failed opening ‘class.ezpdf.php’ for inclusion (include_path=’.:/opt/lampp/lib/php’) in /opt/lampp/htdocs/pas.php on line 2

    Fatal error: Class ‘Cezpdf’ not found in /opt/lampp/htdocs/pas.php on line 3

    tengo las dos clases y la carpeta fonts le doy las garcias antemanos

  • yeid |

    hola yormary… respecto a lo que pides yo ya pasé por ahi,,, adjunto codigo…

    este crea un pdf prestablecido y recibe unas variables que antes se han llenado..


    <?php

    session_start();

    error_reporting(E_DEPRECATED);
    error_reporting(E_ERROR);

    $usuari= $_SESSION['usuari'];

    while (($_SESSION['usuari']=='')or ($_SESSION['usuari']=='DESCONOCIDO'))
    { /*
    echo "alert(' \b Usted no puede ver esta p\xe1gina. Antes debe loguearse. \b ! ')";
    echo "window.location.href=('index.php')";*/
    }
    include ('carta_unavez.php');
    $usuario = $_SESSION['usuari'];

    $conn = conectar();
    if(validar($usuario,$conn))
    {
    odbc_close($conn);

    die("
    Sistema de gestión - Earthborn | Autenticación de usuarios | Departamento de sistemas | SERVICRÉDITO S.A:::
    Copyright © 2011 . Todos los derechos reservados.
    ir a Inicio
    volver a Intarnet Corporativa

    ");

    }else
    {
    include ('maximo.php');
    $conn = conectarmax();
    $Codigo_consecutivo = obtenerConsecutivo($conn);
    odbc_close($conn);
    }

    /*if (($_POST['txtMotivo']=='')or ($_POST['txtEmpresa']==''))
    {
    echo "alert(' \b Usted no puede ver esta p\xe1gina. \b ! Antes debe llenar los datos del formulario CartaLaboral ')";
    echo "window.location.href=('CartaLaboral.php')";
    }*/

    /*
    while (($_POST['txtMotivo']=='')or ($_POST['txtCiudad']=='-')or ($_POST['txtEmpresa']==''))
    {
    echo "alert(' \b Usted no puede ver esta p\xe1gina. \b ! Antes debe llenar los datos del formulario CartaLaboral ')";
    echo "window.location.href=('CartaLaboral.php')";
    }

    */

    include_once('class.ezpdf.php');
    require_once('conexion.php');
    require_once ('consultasql.php');

    $textomotivo=$_POST["txtMotivo"];
    $textoempresa=$_POST["txtEmpresa"];
    $textociudad=$_POST["txtCiudad"];
    $pdf = new Cezpdf('Carta');

    $pdf->selectFont('fonts/Helvetica.afm',array('Column1'=> array('justification'=>'center','width'=>200)));
    $pdf->setEncryption('','',array('print'));

    //$pdf->setEncryption(); //no me deja copiar, pegar, ni tampoco IMPRIMIR

    $pdf->ezSetCmMargins(3,3,3,3);

    setlocale(LC_TIME, 'Spanish');
    $pdf->ezText(strftime("\nMedellín, %d de %B de %Y \n\n\n"));
    //$pdf->ezText("\n\n Medellín, ".date("d F Y\n\n\n\n"),10);

    $pdf->ezText("Señores,",12);
    $pdf->ezText("$textoempresa",12);
    $pdf->ezText("$textociudad\n\n",12);
    $pdf->ezText("Asunto: Certificado laboral\n\n",12);

    $pdf->ezText("MiEmpresaS.A. identificado con Nit. 800000000, certifica la información que se detalla a continuación:\n",12);

    //{
    $pdf->ezText("\t\t\t\t\t\tNombre empleado:\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t$resultnombre",12);
    $pdf->ezText("\t\t\t\t\t\tDocumento de identificación:\t\t\t\t\t\t\t$resultid",12);
    $pdf->ezText("\t\t\t\t\t\tCargo:\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t$resultcargo",12);
    $pdf->ezText("\t\t\t\t\t\tTipo de contrato:\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t$resultcontrato",12);
    $pdf->ezText("\t\t\t\t\t\tFecha de ingreso:\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t$resultfecha",12);
    $pdf->ezText("\t\t\t\t\t\tSalario Mensual:\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t $ $resultsalari\n\n",12);
    if ($Saldo== 0)
    {
    $pdf->ezText("En el momento el empleado no presenta endeudamiento con la empresa. ",12);
    $pdf->ezText(" ",10);
    }
    else
    {
    $pdf->ezText("En el momento el empleado presenta endeudamiento con la empresa por valor de $ $deuda \n ",12);
    }

    $pdf->ezText("Se expide esta certificación laboral a solicitud del empleado, para $textomotivo.\n",12);
    $pdf->ezText("Estaremos a su disposición para verificar la anterior información, en el 4446373 Opción 1 Ext. 125\n\n",12);
    $pdf->ezText("\nCordialmente,\n\n",12);

    $pdf->ezText("\n\n\n\n\n\dorotea Facunda",12);
    $pdf->ezText("Coordinadora Administrativa \n",12);
    }

    $pdf->ezText(" CÓDIGO: SVC $Codigo_consecutivo",8);

    //$pdf->addJpegFromFile('logo.jpg',200,590,100); //coloca una imagen

    // $pdf->ezText("Hora: ".date("H:i:s"),10); // para imprimir la hora del servidor

    }

    ?>

  • ivan |

    estoy usando la libreria ezpdf pero me gustaria saber cual es el metodo para insetar una imagen este es el codigo que genere
    selectFont(‘fonts/Helvetica.afm’);
    $datacreator = array (
    ‘Title’=>’Acuse de Recibido’,
    ‘Author’=>’UAEH’,
    ‘Subject’=>’DGC’,
    ‘Creator’=>’GESTION DE LA CALIDAD’,
    ‘Producer’=>’http://www.uaeh.edu.mx’
    );
    $pdf->addinfo($datacreator);
    $data[] = array(‘col1’=>’DE:’, ‘col2’=>$_POST[‘dependencia’]);

    $pdf->addInfo($datacreator);

    $data[] = array(‘col1’=>’DEPENDENCIA:’, ‘col2’=>$_POST[‘dependencia’]);
    $data[] = array(‘col1’=>’SOLICITANTE:’, ‘col2’=> $_POST[‘nombre’]);
    $data[] = array(‘col1’=>’PUESTO:’, ‘col2’=>$_POST[‘puesto’]);
    $data[] = array(‘col1’=>’E-MAIL:’, ‘col2’=> $_POST[‘email’]);
    $data[] = array(‘col1’=>’DOCUMENTOS:’, ‘col2’=>’VARIABLE DE FORMULARIO’);
    $data[] = array(‘col1’=>’ARCHIVO:’, ‘col2’=>’VARIABLE DE FORMULARIO’);
    $data[] = array(‘col1’=>’RAZON DE CAMBIO’, ‘col2’=>$_POST[‘razon’]);
    $data[] = array(‘col1’=>’CAMBIO PROPUESTO’, ‘col2’=>$_POST[‘cambio’]);

    $titles = array(‘col1’=>’CAMPOS‘, ‘col2’=>’DATOS USUARIO‘);

    $pdf->ezText(“Universidad Autonoma del Estado de Hidalgo\n”,16,’center’);
    $pdf->ezText(“Direccion de Planeacion\n”,12);
    $pdf->ezText(“Direccion de Gestion de la Calidad\n”,12);
    $pdf->ezText(“Acuse de Recibido\n”,12);
    $pdf->ezTable($data,$titles,”,$options );
    $pdf->ezText(“\n\n\n”,10);
    $pdf->ezText(“Fecha: “.date(“d/m/Y”),10);
    $pdf->ezText(“Hora: “.date(“H:i:s”).”\n\n”,10);
    $pdf->ezStream();
    ?>

  • jok3rcit0 |

    Hola,
    Muy buen post!!
    Solo tengo una consulta espero me puedas ayudar…
    Como podría agregar imágenes para el Formato de mi PDF ?
    Por ejemplo en vez que diga “Meses en PHP ”
    aparezca una Imagen!
    agradezco todo el apoyo que brindas

  • jok3r |

    si, de nuevo yo! D: el problema anterior ya pude resolverlo gracias…
    ahor avengo con uno nuevo u.U
    se trata de que genero un pdf y así ahora lo que se muestra son cantidades ..
    problema: los muestra como numeros tal cual…
    si quisiera que los mostrara con formato de cantidad/moneda se puede?

  • Rodwyn |

    yo tengo un problema tan basico como:

    Warning: include(ejemplos/class.ezpdf.php) [function.include]: failed to open stream: No such file or directory in C:\AppServ\www\ejemplos\pdf01.php on line 10

    Warning: include() [function.include]: Failed opening ‘ejemplos/class.ezpdf.php’ for inclusion (include_path=’.;C:\php5\pear’) in C:\AppServ\www\ejemplos\pdf01.php on line 10

    Fatal error: Class ‘Cezpdf’ not found in C:\AppServ\www\ejemplos\pdf01.php on line 11
    que debo hacer????

  • Jhon Wilson Vanegas Benitez |

    Tengo problemas al generar el documento pdf y me sale el siguiente error, agradezco me colaboren con esto, estoy en colombia

    Deprecated: Assigning the return value of new by reference is deprecated in C:\AppServ\www\Mantenimiento\ubipdf.php on line 3

    Strict Standards: date() [function.date]: It is not safe to rely on the system’s timezone settings. Please use the date.timezone setting, the TZ environment variable or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected ‘America/New_York’ for ‘-5.0/no DST’ instead in C:\AppServ\www\Mantenimiento\class.pdf.php on line 689

    Strict Standards: date() [function.date]: It is not safe to rely on the system’s timezone settings. Please use the date.timezone setting, the TZ environment variable or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected ‘America/New_York’ for ‘-5.0/no DST’ instead in C:\AppServ\www\Mantenimiento\ubipdf.php on line 46

    Strict Standards: date() [function.date]: It is not safe to rely on the system’s timezone settings. Please use the date.timezone setting, the TZ environment variable or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected ‘America/New_York’ for ‘-5.0/no DST’ instead in C:\AppServ\www\Mantenimiento\ubipdf.php on line 47

    Warning: Cannot modify header information – headers already sent by (output started at C:\AppServ\www\Mantenimiento\ubipdf.php:3) in C:\AppServ\www\Mantenimiento\class.pdf.php on line 1916

    Warning: Cannot modify header information – headers already sent by (output started at C:\AppServ\www\Mantenimiento\ubipdf.php:3) in C:\AppServ\www\Mantenimiento\class.pdf.php on line 1917

    Warning: Cannot modify header information – headers already sent by (output started at C:\AppServ\www\Mantenimiento\ubipdf.php:3) in C:\AppServ\www\Mantenimiento\class.pdf.php on line 1919
    %PDF-1.3 %���� 1 0 obj <> endobj 2 0 obj <> endobj 3 0 obj << /Type /Pages /Kids [6 0 R 10 0 R ] /Count 2 /Resources << /ProcSet 4 0 R /Font <> >> /MediaBox [0.000 0.000 841.890 595.280] >> endobj 4 0 obj [/PDF /Text ] endobj 5 0 obj <> endobj 6 0 obj <> endobj 7 0 obj <> stream x���Ms�0��� ۋ�V��R���$�M�ލ-�:`5″�?�?� m�2�.{��}W�]M>DU�R�JfIQ��5’(#ņ���j9�”�w�bq���H�_dQL2T�����蛧2�HjO��s�d��ס��)Tkٕ� ��2W��ɟb’�����7U(��t�B�RVRmz�Ɵ��E�o�:�8� P�_Gc��O6����SxV��;Gm��U�N*�yˁ�.�p����|�F��mo�ކ-^���V�VM�ai��=U����r�^I��:e| �C�R�Z�Q�Ӏ� �I�_�/G�P� endstream endobj 8 0 obj <> endobj 9 0 obj <> stream x���Mo�8���<���z���"�Q[-У�V�.�����/%��L����y_��y��u3-�e4W�(chf)6��='�QF�����&�O2/n��3A�1�x�t˄����e,�d����R����82 !���e��+7�2iM%L���.��z��2��≾��ӡޓ[ȅe��W�V�md�ZQ%/R���٬YNM���]Ev%Y�����.�*���JȀ���J2X�hϰ����o��(}���a�L��CIj����y�0�<�x���3��fl��a�*@�ͼ��y�4="" ���%�����="" c����,���)�q�j����g�="" a�g�n*��}}'��z<�wҕ�c�@ߡ��� �;ԕ�;Ԕ�;�2���$�̈́���r�wq��;4ɵ��f�}���="�3" }�nf��dn)����nd�*�="" ��]̫09�!��+*�2�="��R���$�*I�W4���r�k�xE�\�5���:^�@��" ��f�xu�z�q�ww�="" ����݆b|k�wl��*^9�+�j�f�����,������#���vz�e9��pb�="" �c��3\��="+�AL�a�g&��`�1" �="" �&�ٰ�+�fj��y�l�yp6�-����߳�����l="" ���0гz6��x="" f`{6��@])6p�s�r�������9t̂?�g9.���8Е}�k�f�%�]���="" 18��p��wi�7%�m� �Ę+yb��t﷧�@~t�r�="" 3���z'�����{1��x��݄i�$dr9�do�cmq���\�._�ͥ�gjph���8pfj*�n!��="R���$R�����-z=�B���d�;�g���?�,4�\�2�!Ϙ���LW�" ��#="" x<�@�g8��,�a�3�l��8��ɨ+�f�o�%u���7���8�f�="" �{v��1�8�@�e�%a���="" ?�p�����rjsa^i7�Бkavd��r��2躁pǍh��~$t="" ��="" �ҏd�l�,���h����o��~$t*.ۺj?)3�|��fb�v��="" j?*="" �myg�ލdj��u)��pik ?(�h���n���a��h#�*c��j�͏t"5j0�4j�?����="" endstream="" endobj="" 10="" 0="" obj="" <> endobj 11 0 obj <> stream x��2�300P@&�ҹ �,�\����`b�gjd�`jf�gil�����,nj�gl endstream endobj xref 0 12 0000000000 65535 f 0000000015 00000 n 0000000080 00000 n 0000000126 00000 n 0000000287 00000 n 0000000316 00000 n 0000000421 00000 n 0000000494 00000 n 0000001049 00000 n 0000001156 00000 n 0000002433 00000 n 0000002498 00000 n trailer <> startxref 2632 %%EOF

  • Eunice |

    Hola! necesito una ayuda, estoy usando esta herramienta. Pero de un tiempo para el archivo que se genera no abre. Me dice que el tipo de archivo desconocido (application/octect-stream) no está permitido. Porque será eso?

  • antonio |

    Hola! necesito una ayuda, estoy usando esta herramienta.pero al momento de correr la aplicasion me sale el siguiente error
    Warning: Cannot modify header information – headers already sent by
    (output started at C:\AppServ\www\imprime\imp\documento.php:9)
    in C:\AppServ\www\imprime\imp\class.pdf.php on line 1916
    y la linea es esta en class.pdf es esta:
    header(“Content-type: application/pdf”);

  • patricio silva |

    genero el siguiente pdf y me aparece un error
    que es el siguiente
    Image($image_file, 10, 10, 15, ”, ‘JPG’, ”, ‘T’, false, 300, ”, false, false, 0, false, false, false); // Set font $this -> SetFont(‘helvetica’, ‘B’, 20); // Title $this -> Cell(0, 15, ‘DETALLE CHECKLIST.PDF’, 0, false, ‘C’, 0, ”, 0, false, ‘M’, ‘M’); } // Page footer public function Footer() { // Position at 15 mm from bottom $this -> SetY(-15); // Set font $this -> SetFont(‘helvetica’, ‘I’, 8); // Page number $this -> Cell(0, 10, ‘Page ‘.$this->getAliasNumPage().’/’.$this->getAliasNbPages(), 0, false, ‘C’, 0, ”, 0, false, ‘T’, ‘M’); } } // create new PDF document $pdf = new MYPDF(PDF_PAGE_ORIENTATION, PDF_UNIT, PDF_PAGE_FORMAT, true, ‘UTF-8′, false); // set document information $pdf -> SetCreator(PDF_CREATOR); $pdf -> SetAuthor(‘patricio silva’); $pdf -> SetTitle(‘TCPDF Example 003′); $pdf -> SetSubject(‘TCPDF Tutorial’); $pdf -> SetKeywords(‘TCPDF, PDF, example, test, guide’); // set default header data $pdf -> SetHeaderData(PDF_HEADER_LOGO, PDF_HEADER_LOGO_WIDTH, PDF_HEADER_TITLE, PDF_HEADER_STRING); // 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 font $pdf -> SetFont(‘times’, ”, 20); // add a page $pdf -> AddPage(); Cell($w, $h=0, $txt=”, $border=0, $ln=0, $align=”, $fill=0, $link=”, $stretch=0, $ignore_min_height=false, $calign=’T’, $valign=’M’) // test Cell stretching $pdf -> cell(0, 0, ‘¿La mezcla del retorno esta realizada en el equipo HCNA?:’,$_POST[‘$mezcla’],1,’L’,0,”,0); $pdf -> Cell(0, 0, ‘¿El equipo HCNA esta instalado al inicio de la red?:’ , $_post[‘$iniciored’], 1, ‘L’, 0, ”, 0); $pdf -> Cell(0, 0, ‘¿La red tiene sólo cable coaxial con 90% de malla?:’, $_post[‘$cableado’], 1, ‘L’, 0, ”, 0); $pdf -> Cell(0, 0, ‘¿Hay Atenuadores dentro de la red HCNA (en splitter/STB)?:’,$_post[‘$atn’] , 1, ‘L’, 0, ”, 0); $pdf -> Cell(0, 0, ‘Conectores Cónicos en red HCNA:’, $_post[‘$conico’], 1, ‘L’, 0, ”, 0); $pdf -> Cell(0, 0, ‘¿Esta conectada la red HCNA a TIERRA?:’,$_post[‘$tierra’], 1, ‘L’, 0, ”, 0); $pdf -> cell(0, 0,’¿Sólo hay Splitter GHS-xH en red HPNA?:’,$_post[‘$ghpna’],1, ‘L’, 0, ”, 0); $pdf -> cell(0, 0,’¿Hay instalado un amplificador RF?:’,$_POST[‘$amp’],1, ‘L’, 0, ”, 0); $pdf -> cell(0, 0,’¿El bridge HCNA tiene la version 1.9.4?:’,$_POST[‘$ftpna’],1, ‘L’, 0, ”, 0); $pdf -> cell(0, 0,’¿Pin interior es XDSL?:’,$_POST[‘$pin’],1, ‘L’, 0, ”, 0); $pdf -> cell(0, 0,’¿Acometida es XDSL?:’,$_POST[‘$acom’],1, ‘L’, 0, ”, 0); $pdf -> cell(0, 0,’¿Tiene servicio Wi-Fi?:’,$_post[‘$wifi’],1, ‘L’, 0, ”, 0); $pdf -> cell(0, 0,’¿Seleccionó canal de acuerdo a INSSIDER?:’,$_post[‘$wifi1′],1, ‘L’, 0, ”, 0); $pdf -> cell(0, 0,’¿Adjuntó respaldo de acceso remoto al Router?:’,$_post[‘4wifi2′],1, ‘L’, 0, ”, 0); $pdf -> cell(0, 0,’OT asociada:’,$_POST[‘$tk’],1, ‘L’, 0, ”, 0); $pdf -> cell(0, 0,’Tecnico que Instalo:’ ,$_post[‘$tecnico’],1, ‘L’, 0, ”, 0); //Close and output PDF document $pdf -> Output(‘reporte_pdf.pdf’, ‘I’); //============================================================+ // END OF FILE //============================================================+ ?>
    ____________________________________________________________________________-

    el formulario es el siguiente

    <?php
    require_once('c:xampp/xampp/htdocs/checklist/instalaciones/config/lang/eng.php');
    require_once('c:xampp/xampp/htdocs/checklist/instalaciones/tcpdf.php');

    $indice = $_POST['interno'];
    $index = $_POST['index'];
    $conectar = mysql_connect("localhost","root","") or die ("No es posible realizar la conexión");
    $base = mysql_select_db("radios",$conectar) or die ("No es posible abrir la base de datos");
    // listo
    //Envio la consulta… solo para sacar el dato del supervisor
    $querysup = "SELECT `nombre` , `apellido` FROM `tecnicos` WHERE indice = '" . $indice ."';";
    $qry = mysql_query($querysup);
    //

    for ($i=0; $i < mysql_num_rows ($qry); $i++)
    {
    $ress = mysql_fetch_array ($qry);
    $super = "$ress[nombre] $ress[apellido]”;
    }
    // aqui termina la wea

    //Envio la consulta… solo para sacar el dato del TECNICO
    $querytec = “SELECT `codigo` FROM `tecnicos` WHERE indice = ‘” . $index .”‘;”;
    $tecqry = mysql_query($querytec);
    //

    for ($i=0; $i < mysql_num_rows ($tecqry); $i++)
    {
    $tecress = mysql_fetch_array($tecqry);
    $tecnico = "$tecress[codigo]”;
    }
    // aqui termina la wea

    $mezcla = $_POST[‘mezcla’];
    $mezcladet = $_POST[‘mezcladet’];
    $amp = $_POST[‘amp’];
    $ampdet = $_POST[‘ampdet’];

    $iniciored = $_POST[‘iniciored’];
    $inicioreddet = $_POST[‘inicioreddet’];
    $cableado = $_POST[‘cableado’];
    $cableadodet = $_POST[‘cableadodet’];
    $atn = $_POST[‘atn’];
    $atndet = $_POST[‘atndet’];
    $tierra = $_POST[‘tierra’];
    $tierradet1 = $_POST[‘tierradet1′];
    $tierradet2 = $_POST[‘tierradet2′];
    $conico = $_POST[‘conico’];
    $conicodet = $_POST[‘conicodet’];
    $ghpna = $_POST[‘ghpna’];
    $ghpnadet = $_POST[‘ghpnadet’];
    $fhpna = $_POST[‘fhpna’];
    $fhpnadet = $_POST[‘fhpnadet’];
    $pin = $_POST[‘pin’];
    $pindet = $_POST[‘pindet’];
    $acom = $_POST[‘acom’];
    $acomdet = $_POST[‘acomdet’];
    $tk = $_POST[‘tk’];
    $wifi = $_POST[‘wifi’];
    $wifi1 = $_POST[‘wifi1′];
    $wifi1det = $_POST[‘wifi1det’];
    $wifi2 = $_POST[‘wifi2′];
    $wifi2det = $_POST[‘wifi2det’];

    $query = mysql_query (“select *from radios(¿El equipo HCNA esta instalado al inicio de la red?:,¿La red tiene sólo cable coaxial con 90% de malla?:,¿Hay Atenuadores dentro de la red HCNA (en splitter/STB)?:,Conectores Cónicos en red HCNA:,¿Esta conectada la red HCNA a TIERRA?:,¿Sólo hay Splitter GHS-xH en red HPNA?:,¿Sólo hay Splitter GHS-xH en red HPNA?:,¿El bridge HCNA tiene la versión 1.9.4?:,¿Pin interior es XDSL?:,¿Acometida es XDSL?:,¿Tiene servicio Wi-Fi?:,¿Seleccionó canal de acuerdo a INSSIDER?:,¿Adjuntó respaldo de acceso remoto al Router?:,OT asociada:,Técnico que Instaló:) values ‘$valor(‘$mezcla’,’$mezcladet’,’$iniciored’,’$inicioreddet’,’$cableado’,’$cableadodet’,’$amp’,’$ampdet’,’$atn’,’$atndet’,$tierra,’$tierradet1′,’$tierradet2′,’$conico’,’$conicodet’,’$ghpna’,’$ghpnadet’,’$fhpna’,’$fhpnadet’,’$pin’,’$pindet’,$acom’,’$acomdet’,’$wifi’,’$wifi1′,’$wifi1det’,’$wifi2′,’$wifi2det’,’$tk’,’$tecnico”)”);{
    }
    ?>

    Image($image_file, 10, 10, 15, ”, ‘JPG’, ”, ‘T’, false, 300, ”, false, false, 0, false, false, false);
    // Set font
    $this -> SetFont(‘helvetica’, ‘B’, 20);
    // Title
    $this -> Cell(0, 15, ‘DETALLE CHECKLIST.PDF’, 0, false, ‘C’, 0, ”, 0, false, ‘M’, ‘M’);
    }

    // Page footer
    public function Footer() {
    // Position at 15 mm from bottom
    $this->SetY(-15);
    // Set font
    $this->SetFont(‘helvetica’,’I’,8);
    // Page number
    $this->Cell(0, 10,’Page’.$this->getAliasNumPage().’/’.$this->getAliasNbPages(),0,false,’C’,0,”,0,false,’T’,’M’);
    }

    // create new PDF document
    $pdf = new MYPDF(PDF_PAGE_ORIENTATION,PDF_UNIT,PDF_PAGE_FORMAT,true,’UTF-8′,false);

    // set document information
    $pdf -> SetCreator(PDF_CREATOR);
    $pdf -> SetAuthor(‘patricio silva’);
    $pdf -> SetTitle(‘TCPDF Example 003′);
    $pdf -> SetSubject(‘TCPDF Tutorial’);
    $pdf -> SetKeywords(‘TCPDF, PDF, example, test, guide’);

    // set default header data
    $pdf -> SetHeaderData(PDF_HEADER_LOGO,PDF_HEADER_LOGO_WIDTH,PDF_HEADER_TITLE,PDF_HEADER_STRING);

    // 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 font
    $pdf -> SetFont(‘times’, ”, 20);

    // add a page
    $pdf -> AddPage();

    Cell($w, $h=0, $txt=”, $border=0, $ln=0, $align=”, $fill=0, $link=”, $stretch=0, $ignore_min_height=false, $calign=’T’, $valign=’M’)

    // test Cell stretching
    $pdf -> cell(0, 0, ‘¿La mezcla del retorno esta realizada en el equipo HCNA?:’,$_POST[‘$mezcla’],1,’L’,0,”,0);

    $pdf -> Cell(0, 0, ‘¿El equipo HCNA esta instalado al inicio de la red?:’ , $_post[‘$iniciored’], 1, ‘L’, 0, ”, 0);

    $pdf -> Cell(0, 0, ‘¿La red tiene sólo cable coaxial con 90% de malla?:’, $_post[‘$cableado’], 1, ‘L’, 0, ”, 0);

    $pdf -> Cell(0, 0, ‘¿Hay Atenuadores dentro de la red HCNA (en splitter/STB)?:’,$_post[‘$atn’] , 1, ‘L’, 0, ”, 0);

    $pdf -> Cell(0, 0, ‘Conectores Cónicos en red HCNA:’, $_post[‘$conico’], 1, ‘L’, 0, ”, 0);

    $pdf -> Cell(0, 0, ‘¿Esta conectada la red HCNA a TIERRA?:’,$_post[‘$tierra’], 1, ‘L’, 0, ”, 0);

    $pdf -> cell(0, 0,’¿Sólo hay Splitter GHS-xH en red HPNA?:’,$_post[‘$ghpna’],1, ‘L’, 0, ”, 0);

    $pdf -> cell(0, 0,’¿Hay instalado un amplificador RF?:’,$_POST[‘$amp’],1, ‘L’, 0, ”, 0);

    $pdf -> cell(0, 0,’¿El bridge HCNA tiene la version 1.9.4?:’,$_POST[‘$ftpna’],1, ‘L’, 0, ”, 0);

    $pdf -> cell(0, 0,’¿Pin interior es XDSL?:’,$_POST[‘$pin’],1, ‘L’, 0, ”, 0);

    $pdf -> cell(0, 0,’¿Acometida es XDSL?:’,$_POST[‘$acom’],1, ‘L’, 0, ”, 0);

    $pdf -> cell(0, 0,’¿Tiene servicio Wi-Fi?:’,$_post[‘$wifi’],1, ‘L’, 0, ”, 0);

    $pdf -> cell(0, 0,’¿Seleccionó canal de acuerdo a INSSIDER?:’,$_post[‘$wifi1′],1, ‘L’, 0, ”, 0);

    $pdf -> cell(0, 0,’¿Adjuntó respaldo de acceso remoto al Router?:’,$_post[‘$wifi2′],1, ‘L’, 0, ”, 0);

    $pdf -> cell(0, 0,’OT asociada:’,$_POST[‘$tk’],1, ‘L’, 0, ”, 0);

    $pdf -> cell(0, 0,’Tecnico que Instalo:’ ,$_post[‘$tecnico’],1, ‘L’, 0, ”, 0);

    //Close and output PDF document
    $pdf -> Output(‘reporte_pdf.pdf’, ‘I’);

    //============================================================+
    // END OF FILE
    //============================================================+
    ?>
    esperando una respuestas muchas gracias

  • Jessica |

    SOLUCION A ESTE PROBLEMA! RESUELTO :)

    Warning: Cannot modify header information – headers already sent by (output started at c:\archivos de programa\easyphp1-8\www\pdfclassphp\index.php:8) in c:\archivos de programa\easyphp1-8\www\pdfclassphp\class.pdf.php on line 1916
    Warning: Cannot modify header information – headers already sent by (output started at c:\archivos de programa\easyphp1-8\www\pdfclassphp\index.php:8) in c:\archivos de programa\easyphp1-8\www\pdfclassphp\class.pdf.php on line 1917
    Warning: Cannot modify header information – headers already sent by (output started at c:\archivos de programa\easyphp1-8\www\pdfclassphp\index.php:8) in c:\archivos de programa\easyphp1-8\www\pdfclassphp\class.pdf.php on line 1919
    %PDF-1.3 %âãÏÓ 1 0 obj > endobj 2 0 obj > endobj 3 0 obj > >> /MediaBox [0.000 0.000 595.280 841.890] >> endobj 4 0 obj [/PDF /Text ] endobj 5 0 obj > endobj 6 0 obj > endobj 7 0 obj > stream xœãr Q06Ð300P077×324PIQÐw3‹*„¤)(høf*eæ¦)¤¤)¤æ)xh*„d)¸†Âˆ£ endstream endobj 8 0 obj > endobj xref 0 9 0000000000 65535 f 0000000015 00000 n 0000000080 00000 n 0000000126 00000 n 0000000280 00000 n 0000000309 00000 n 0000000414 00000 n 0000000477 00000 n 0000000617 00000 n trailer > startxref 724 %%EOF
    _________________________________________

    Lo unico que hay que hacer es quitar cualquier rastro de html antes del php de manera que la linea 1 empieze con <?php…. include…

    Espero esto les ayude saludos!

  • Owen |

    Buenas a Todos.
    Quisiera saber como exportar a Excel y PDF, desde una misma libreria o alguna idea de ello.
    Se que existe el FPDF y PHPExcel, pero la idea es crear un reporte, con una logica, y exportar en dos formatos.

    saludos

  • Daniel |

    Buenos días, estoy trabajando con ASP y FPDF, necesito imprimir un código de barra, tengo un problema cuando quiero incorporar una tipografia TTF.
    Agregue el archivo TTF a la carptea font de fpdf, genere el afm y cree un archivo .js de metricas, que según vi es lo que utiliza el fpdf de asp para levantar las fuentes.
    Mero me tira un error “La fuente PF Interleaved 2of5 contiene un cuadro /Bbox erroneo”.
    Ya probé todo lo que se me ocurrió pero sigue le problema
    No se si js esta bien creado ya que no encontré ningún ejemplo funcional.
    Alguien me puede dar una mano?

    Muchas gracias.

  • Rogelio |

    ¿Alguien sabe cómo le puedo hacer para crear una nueva página (ya se que con $pdf->ezNewPage(); la creamos) pero que contenga una imagen de fondo distinta?

    es decir, ya tengo una primer página donde tengo una imagen fondo:
    pdf=new backgroundPDF(‘a4′, ‘portrait’, ‘image’, array(‘img’=>’imagen1.jpg’));
    la idea es que la segunda página tenga otra imagen de fondo

  • Alejandro |

    Hola unijimpe y compañia! Me descargué hace unos días la clase R&OS: pdf class , al ver este artículo (te sigo bastante) pero he de decir que no me sirvió, ninguna de las clases que he probado son flexibles en cuanto poder meterle tu propio codigo ya sea css, html, php, javascript…

    Entonces seguí buscando y di con esto, que me ha salvado la vida.

    Por las pruebas que he hecho:

    – Genera pdf autoimprimibles (puse un enlace que al pulsarlo me generaba un pdf, que no se veia por ninguna parte y directamente salia por la impresora, algo que si que no he encontrado en ningun sitio)

    – Hice un formulario de contacto con php, que al rellenarlo mandaba un email de confirmacion, y al crear el pdf funcionaba perfectamente con sus estilos y funciones.

    Hasta la fecha no he hecho mas pruebas. Pero me gustó porque maneja varias opciones, iframes, php, ajax…

    Aquí el enlace:

    http://www.pdfservices.net/

  • Carlos |

    a los que les sale “SE HA PRODUCIDO UN ERROR AL CARGAR EL DOCUMENTO PDF” a mi me pasaba y el error es que tenemos que poner la dirreccion correcta del font[tipo de letra] y se tiene que poner por que es un atributo necesario…..

  • daisliamanuel |

    Que tal, buenas a todos, me han parecido interesantes todas las situaciones aqui expuestas, sin embargo, no logré encontrar lo que busco, mi problema es que necesito repetir una imagen en todas mis paginas generadas, ya la tengo pero se muestra solo en la primera. Mucho agradeceré si pueden apoyarme ofreciendo mi ayuda tambien en caso de ser requerida y esté en mis posibilidades. Saludos y de antemano gracias!!!

  • Jorge |

    En el código de ejemplo, hay que sacar “$options”, está demás el parámetro este.

    Saludos.

  • gerardo |

    buenas ! lei sobre la parte de alinear el texto de las tablas, yo tome el ejemplo que publicas en la pagina, donde hay un arreglo llamado $titles, es allí donde debo hacer la alineación, como lo hago? o debo hacer otro array? con los mismos titulos, podrias darme un ejemplo en base al script presentado en esta página por favor…

  • gerardo |

    Buenas! yo lei el manual acerca de la alineacion del texto en las tablas de consultas para los PDF, tomando el script sobre pdf con php y mysql que presentas, hay un arraglo llamado $titles, que contine:
    $titles = array(
    ‘num’=>’Numero‘,
    ‘usuario’=>’Nombre‘,
    ‘clave’=>’Clave‘,

    ); en el manual dice que eztable lleva 4 parametros y uno de ellos el el de las columnas, será en este arreglo que debo hacer la alineacion? o tengo que crear otro arreglo? puedes darme un pequeño ejemplo de como alinear el texto, en base a ese script?… gracias

  • Juan M Wagner |

    Hola, Luis.
    Si es posible agregar imágenes, recién lo he necesitado. Se debe utilizar la funcion

    $pdf->addJpegFromFile(‘logotipo.jpg’, x, y, width, height);

    Creo haber visto otra función para PNG.

  • beto |

    si luis, podes usar una imagen de fondo o de ilustracion usando include(‘class.backgroundpdf.php’);///para fondo
    $pdf = new backgroundPDF(‘a4′, ‘portrait’, ‘image’, array(‘img’=>’Publi3.jpg’)); /// y aca definis

  • hernis |

    amigo como puedo poner la primera fila de la tabla oscura, es decir la fila donde estan los nombres de los campos ?

  • Luis |

    Gracias por la respuesta a mi pregunta anterior, ya pude agregar la imagen!!.

    Ahora tengo otra duda; he utilizado la url http://fpdf.fruit-lab.de/ para convertir archivos *.ttf a *.afm y agregarlos a mi carpeta fonts, pero cuando cargo el pdf me aparece el error “La fuente xxx contiene un cuadro /Bbox erróneo”.

    ¿Alguien sabe como solucionar esto o como cargar correctamente una nueva fuente?

  • Wilson |

    Buenas, :D

    Cómo hago para que el pdf quede guardado en el disco, sin tener que hacerlo manualmente?. Debo enviar correos con el pdf generado. Y esto se debe hacer manualmente.

    Muchas Gracias

  • Dan |

    Hola buen dia
    Eh estado trabajando con estalibreria y lei la documentacion pero no encontre nada relacionado con esta pregunta no se si alguien pueda ayudarme..

    Quiero crear un pdf hasta qui todo bien pero ejemplo
    hice la primera pagina la Segunda pagina ya la tengo y solo quiero unirla al mismo documento
    alguien sabe como hacer esto con esta libreria?

  • Gerardo |

    Voy a crear un enlace que genere el documento PDF, el caso es que quiero que al pulsar el link, se de la opción para guardarlo o abrirlo, y no que lo abra directamente. como lo hago?. Gracias…

  • Diego |

    Hola

    Oye estoy trabajando con esta clase y es muy buena pero no encuentro como colocar viñetas en el pdf tienes alguna idea si se puede por mas que busque no lo encontre saludos

  • Fedra |

    yo solo tengo un problema con la imagen l misma la muestra en windows muy bien pero en debian sale error o no la muestra esta bien la extencion verifique minusculas todo pero no la muestra necesito ayuda

  • yeid |

    Buenos dias…
    Tengo una duda, estoy reutilizando este còdigo, tiene porblemas para generar el pdf, en ocasiones lo genera en otras no… pero bueno mi problema es que necesito utilizar una funcion que està en una clase php independiente…. como hago para que se pueda usar ???

    ejm: Necesito convertir la variable $resultsalario que traigo de BD a letras
    ya la funcion la tengo lista, se llama nomtoletras();
    como hago pa que me la reconozca ? debo poner algo adelante ?

    codigo:
    $pdf->ezText(“Que $nombres identificado(a) con la cédula de ciudadanía No. $identificacion , labora en la Coorporación en el cargo $cargo , con contrato a término $contrato desde el: $fecha_ingreso . Y su salario mensual es $ $resultsalario.”, 12);
    //funcion que deseo usar para convertir la variable
    numtoletras($resultsalario);

    De antemano mil gracias.

  • Antonio |

    Saldos amigo, no puedo descargar el zip con la clase y los archivos php para realizar este ejercicio, tendrás otro sitio donde pueda descargarlo o me lo podrías facilitar por favor? :) Esta muy bueno tu foro me ha servido de mucho, agradezco de antemano tu tiempo, estamos en contacto, saludos.

  • jose |

    hola espero me puedan ayudar, una pregunta como genero una LISTA en pdf por php NO TABLA requiero una lista
    ejemplo:
    Nombre: jose
    Apaterno: perez.
    …..

    y otra como concateno 2 variables. ejemplo:
    Alumno: Jose Perez

  • yeid |

    amigo unijimpe, algun correo donde te pueda escribir una duda ? veo que estás muy ausente por este medio.

    necesito saber como poner una imagen mediante esta clase pero sin coordenadas

    se que se hace asi

    $pdf->addJpegFromFile(‘images/firma.jpg’,80,160,200); //izq, distancia de abajo a arriba, tamaño

    pero quiero que la imagen no quede quemada en una posicion, porque si al crear el pdf por tanta informacion, se crean tres hojas, esa firma va salir en la primera hoja y en esas coordenadas…

    De antemano gracias

  • fernando |

    Gracias por este aporte, solamente con una consulta porque al cargar mas datos no me los muestra y me da el error al cargar el PDF, alguien sabe como solucionar esto.
    De antemano gracias por la ayuda.

Publica tu comentario

En este blog los comentarios están moderados, serán mostrados cuando el administrador los apruebe. Por favor, evita comentarios ofensivos u obscenos por que no serán aprobados.
Si deseas publicar código fuente debes hacerlo entre las etiquedas <code> y </code>, además debes reemplazar los carácteres < por &lt; y > por &gt;.