Publicado en Guías, Manuales y Tutoriales, Trabajo

mipdf trabajando con fpdf

Se que no tiene perdón dejar abandonado el blog, pero el trabajo es primero 😦 y si a eso le sumamos que mi conjunto de discos duros (no hablo de RAID) tuvo un colapso (que aún no soluciono) complica un poco más las cosas.

Para evitar hacerles perder el tiempo le pongo el enlace al código completo como debió ser desde un principio lamento no haberlo hecho en su momento y espero no sea tarde para las personas que lo necesiten. http://pastebin.com/UZjSCiR8

 

Si por alguna razón el código no esta disponible avísenme por email, no lo agrego en el post porque wordpress lo edita al contener código php y html.

La mayor parte del tiempo me la he pasado leyendo y haciendo pruebas con la clase FPDF, la cual permite generar archivos PDF con php entre sus ventajas no esta el rendimiento 😛 pero si la posibilidad de incluirla en nuestros proyectos de forma gratuita, existe una alternativa pero nada barata llamada PDFlib.

Un ejemplo sencillo:

<?php
require(’fpdf.php’);
//Llama al archivo que contiene la clase
$pdf=new FPDF(); // Crea un objeto de la clase fpdf()
$pdf->AddPage(); // Agrega una hoja al documento.
$pdf->SetFont(’Arial’,’B’,16); //Establece la fuente a utilizar, el formato Negrita y el tamaño

//La siguiente instrucción escribe el siguiente mensaje.

$pdf->Cell(40,10,’Hola Mundo xDD Ejemplo sencillo de un documento PDF con la clase en PHP FPDF’);
$pdf->Output(); //
Envía como salida del documento
?>

Como se puede apreciar su uso es sencillo, además podemos agregar imágenes, líneas, cuadros o rectángulos y es cuando comienza la verdadera diversión 😛 ya que tarde algo en acostumbrarme en el uso de esas características. Pero si no es suficiente podemos generar reportes tan completos como queramos, con tablas, colores, enlaces, etc.

En la misma página podemos encontrar otras alternativas basadas en la clase fpdf, a ver si me doy «tiempo» y les digo que tal esta.

Les dejo lo que me tuvo entretenido unos días je, je.. Ejemplo básico de fpdf.

P.D. Si a alguno le interesa el código de ejemplo, deje un mensaje con su email para enviárselo 🙂

Fuente: Ejemplo, página oficial.

Otros ejemplos:

336 comentarios sobre “mipdf trabajando con fpdf

      1. dios yo ando necesitando un codigo como el del ejemplo desde hace muchisimo tiempo me lo pueden enviar a mi tambien gracias….

  1. Hola!

    Podrías enviarme el código fuente?

    Pues me quedé clavado y no consigo salir del paso.

    Muchas gracias.

    PD: Impresionante PDF! 🙂

  2. Je, je.. ok te lo enviaré, respecto al pdf no lo considero impresionante pero fue una muy buena practica de lo básico de la clase.

    Por cierto me encontré otra clase al instalar el XAMPP (o es LAMPP :s) me instalo una clase llamada: EZPDF.

    Pero aún no me he dado tiempo para hacer algo con ella.

    Saludos y gracias por el comentario.

  3. Hola!
    Me podria mandar el codigo plis, estoy trabajndo con los fpdf, pero necesito hacder unas tablas como las que tu generas y no he podido,
    spero mepuedas ayudar.
    Saludos y gracias.

  4. oye me intersae conocer mas acerca de como crear pdf me puedes mandar el ejemplo y si tienes algunos otros o otras cosas que sean de utilidad por favor mandamelas.

    tambien si me puedes mencionar como configuro la pagina pero que se en posicion horizontal

  5. Saludos Bet, Angel y Luis. Hoy 22 junio les envío el código, he estado algo liado en el trabajo y por eso ni siquiera he publicado en el blog.

    Bet: Aunque parezca raro No he usado NI una sola tabla para el ejemplo que subi al blog 🙂 Aunque a decir verdad es más cómodo trabajar con tablas, sobre todo con el texto que se coloco a un lado =S

    Luis: Por el momento es el único código propio, como ya mencione el trabajo me ha estado absorbiendo más tiempo del que quisiera, ando haciendo mis pininos con ajax 🙂

    Pueden encontrar ejemplos en la página del proyecto, desde aplicar colores, cambiar la orientación de la página hasta manejo un poco más avanzado con tablas.

    Solo una pequeña anotación, esta herramienta al parecer no soporta documentos muy complejos o de una gran cantidad de hojas, por lo que es recomendable investigar en internet si puede ajustarse a nuestras necesidades.

    Bye

  6. Hola Alberto!
    Te cuento q he hecho varias cosillas con el fpdf, pero no encuentro la manera de que me tome variables que vienen de la pagina que llama al reporte. ¿Has hecho algo por el estilo? ¿sera posible una ayudita?
    En la pagina de fpdf encontre mucha información, pero nada sobre esto.
    Gracias! y muy bueno el blog!!

    CiS

  7. Ok, Cis te cuento que ese podría ser el siguiente nivel de la clase al cual aún no he entrado no por falta de interés sino por que ando falto de tiempo y ahora de PC 😦

    Hice una pequeña prueba con un formulario y usando el método POST, recibo el valor y lo asigno a otra variable y funciona, aunque sin asignarla también.

  8. Hola, he buscado como generar reportes con PHP, hasta que di con el FPDF, pero me he topado con el problemilla de las tablas… veo que lo han solucionado, y ofrecen el código.
    Me podrán mandar dicho código para orientarme con el uso de tablas.

    de antemano gracias 🙂

  9. Oscar Santibañes | Código del formulario
    Que tal Oscar! te envio un cordial saludo, espero no haya demorado mucho en responderte.

    Eduardo | Código para Tablas
    En la página oficial (www.fpdf.org) encontrarás muchas clases para generar tablas (sección Scripts), existen desde las más sencillas hasta la más completas y cuando digo completas solo tienes que ver el ejemplo que anexan y verás que no tiene desperdicio.

    Como experiencia personal uso una clase modificada que a pesar de que cumple su función sigue sin parecerme. Pero al menos trato de no usar aquellas que no permiten su uso con fines comerciales, en mi caso programo en php para una compañía y la verdad no me parece justo usarla sin retribuirle nada a quien la hizo, pero como tampoco están dispuestos a dar un duro (je, je..) pues mejor evito problemas con el autor y uso lo que encuentro, inclusive modificándolas para adecuarlas a mis necesidades.

    http://www.fpdf.org/
    http://www.fpdf.org/es/script/index.php
    He aquí una lista de las que encontrarás:
    23/11/2002 Carlos Vásquez Sáez Example with MySQL
    25/12/2002 Olivier Table with MySQL
    23/03/2003 Philip Clarke MySQL report
    25/07/2004 Andrei Bintintan Table
    13/02/2005 Azeem Abbas HTML table

    Espero te sirvan de algo.. gracias por comentar.

  10. Hola!

    Me interesa mucho conocer la forma en que hiciste ese PDF, se mira bastante complejo y completo…

    Yo necesito hacer varios reportes tomando valores de una base de dato MySql y la verdad que no se donde empezar, talvez si me facilitas el codigo me das una idea….

    Gracias y continua iluminandonos

  11. Hola alberto.. Gracias por el codigo, lo he estado estudiando y me resulta muy util dado que no sabia nada hacerca de la creacion de PDF’s…

    Solo tengo una consulta y talvez tienes la amabilidad de aclararme:

    Cuando subo la clase fpdf.php al server y corro un script que hice de prueba m sale un error todo raro

    **** FPDF error: Could not include font metric file

    Bueno, lei la documentacion de FPDF y dice que no encuentra la fuente, pero como le digo donde debe de ir a buscar el tipo de fuente???

    Slds y gracias de antemano

  12. Veamos, me parece que el código de la clase hace referencia a un directorio de fuentes, el cual viene con el archivo que bajas con la clase.

    Revisando el código de la clase el error lo genera la función SetFont esta función establece la familia de fuentes, el estilo y el tamaño, al parecer todo funciona bien hasta cuando busca la ruta del directorio de fuentes.

    El archivo comprimido de la clase tiene los siguientes elementos:
    carpeta doc
    carpeta font (Esta carpeta es la que no encuentra en la ruta)
    carpeta tutorial
    install.txt
    faq.htm
    histo.htm
    fpdf.css
    fdpf.php

    Al menos cuando realice el ejemplo lo hice del siguiente modo.

    En la carpeta donde tengo el servidor web de manera local cree la carpeta fpdf, dentro de esta se encuentra la clase y el contenido que te liste antes.

    El archivo mipdf.php se encuentra en el directorio raiz y manda a llamar a la clase con la instrucción de php require();

    directorio_servidor
    –archivo mipdf.php
    –directorio_fpdf
    —-contenido del directorio fpdf
    —–contenido del directorio fpdf

    De momento lo que se me ocurre es que la dirección de la carpeta esta mal y por lo mismo no encuentra el directorio de fuentes.

    Trata con los otros 2 ejemplos que hice, buscalos presionando en la categoria de Guías, Manuales y Tutoriales. Son ejemplos más sencillos.

    Espero te sirva de algo, sino deja un comentario.
    Saludos

  13. Por favor yo tengo un reporte con bastante texto en el medio del cual imprimo variables como nombres, quisiera saber como puedo enviar un texto de 15 lineas usando Multicell, es posible digitar todo el texto en varias lineas ?

  14. Mm.. lo que comentas nunca lo he intentado, generalmente imprimo línea por línea ya que sólo me límito a crear formatos 😛

    De acuerdo a la documentación (escasa, pero concisa) de la clase explica que:


    MultiCell(float w, float h, string txt [, mixed border [, string align [, int fill]]])

    Este método permite imprimir texto con saltos de línea. Estos pueden ser automáticos (tan pronto como el texto alcanza el borde derecho de la celda) o explícito (via el carácter \n).

    Tantas celdas como sean necesarias son creadas, uno debajo de otra.

    El texto puede ser alineado, centrado o justificado. El bloque de celda puede ser enmarcado y el fondo impreso.

    Por lo anterior entiendo que si se puede hacer lo que tu quiere, solo tendrías que indicar en la cadena (string) con el cáracter /n (salto de línea) donde acaba cada una de las 15 líneas.

    Es decir, depende del formato de tu cadena un ejemplo arriesgado ya que no lo he probado puede ser:

    MultiCell(float w, float h, string txt [, mixed border [, string align [, int fill]]])

    $nombre1= ‘juan alberto cisneros pérez’;
    $nombre2= ‘maría de los ángeles utrera gonzález’;
    ….
    $nombre15= ‘erika viridiana de luz alcocer’;
    Lo anterior quedaría mejor un arreglo, pero eso depende como lo tengas tú.
    $los_nombres= $nombre1.’\n’.$nombre2.’\n’.los otros nombres.’\n’.$nombre15;

    MultiCell(0, 3, $los_nombres, 0, L, 0).

    Es solo una idea, no tiene forzamente que salir. Por ahora no tengo tiempo para hacer pruebas, si te llega a funcionar por favor responde y si no funciona también para que lo pruebe.

    Saludos.

  15. Muchas Gracias Alberto, por la idea que me diste, y si funciona solo que sin el salto de linea porque el texto que tengo es un texto continuo, y ahora se me presento otro problemita, sabes si es posible justificar, hice lo siguiente y no justifica:
    MultiCell(0,5,».$varTexto.»,0,’J’,0);

    Gracias de antemano.

  16. Disculpas, me rectifico sobre la anterior interrogante, si justica, no actualice bien la pagina 😦

    MultiCell(0,5,”.$varTexto.”,0,’J’,0);

    muchas gracias 😉

  17. Que tal Mary, mira de hecho la documentación de la clase dice lo siguiente:

    align: Establece la alineación de texto. Los posibles valores son:
    * L: alineación a la izquierda
    * C: centrado
    * R: Alineación a la derecha
    * J: justificación (Valor por defecto)

    Te invito a que consultes el manual en linea en la página oficial de la clase, realmente es sencillo de manejar, salvo las tablas pero para eso hay otras clases derivadas =)

    Saludos.

  18. Hola Alberto,
    Gracias por tu ayuda, te refieres a la pagina oficial de FPDF (www.fpdf.org), hace mucho tiempo que estoy intentando abrirla y no logro entrar, antes si estaba activa y ahora ya no o tal vez cambio de dominio?

  19. Ni idea, pero ahora mismo esta funcionando. Además si bajaste la clase del sitio oficial o si el archivo está intacto como en el sitio oficial, debes tener una carpeta con el manual =)

    Buscala y te ahorrarás consultar la página, aunque nunca esta demás visitar clases derivadas para las tablas o alguna otra ayuda.

    Saludos.

  20. hola qué tal, cómo estás????
    Quisiera pedirte por favor que me mandaras el código de tu ejemplo ya que yo estoy tratando de crear un pdf con mis datos de una tabla para que se ajusten a un formato de impresión que tengo y quizás tu ejemplo pueda servirme, ojala y puedas mandarmelo pronto ya que este proyecto me urge en el trabajo y lo necesito para ya, de todas formas te lo agradezco y te elogio tu blog ya que es de muy buena ayuda!!!!!
    Muchos Saludos!!!

  21. 🙂 Gracias por lo elogios, pero no considero que haga una gran labor, solo comparto lo que aprendo de otros sitios o en la práctica.

    Respecto a tu petición dejame ver, porque el ejemplo no hace uso de tablas, es solo un ejemplo con texto, líneas y cuadros para eso debes usar una clase derivada.

    En el comentario #18 escribí el nombre de las clases que me parecen las mejores para el manejo de tablas, todas a excepción de una que no recuerdo de momento tienen un ejemplo para que te guíes y generes tu PDF.

    Si aún así quieres el código ejemplo que subí escribe un mensaje en este mismo post.

    Saludos.

  22. Pues eso que haces de compartir tus conocimientos ya vale esos elogios y más!!!
    Son pocos los que ocupan parte de su tiempo en compartir sus conocimientos!!!
    Y bueno la verdad esperaba que me mandarás el código ya que quería hacer unas pruebas y poder hacer lo que necesito, sé que no es muy parecido pero al menos tu ejemplo me serviría para darme una idea ya que eso me urge para hoy!!! :o(
    Pero bueno espero puedas mandarmelo en el transcurso del día y sino pues aunque sea después para compararlo!!!
    Gracias de todas formas!!!
    PD: Por cierto al decir que tomo los datos de una tabla me refería a una Base de Datos!!

  23. Muchas Gracias por enviarme el archivo, aunque la verdad ya ni lo necesité pues me puse a hacer pruebas y ya pude mandarle los datos desde mi base de datos para imprimir mi archivo, de todas formas Gracias me sirvieron muchísimo tus referencias!!!!!!
    Y cuálquier cosa tienes mi correo!!!!!!!
    Muchos Saludos!!!!

  24. Hola:
    He estado buscando alguna solución a mi problema por San Google, pero no he encontrado nada.
    Se trata de que utilizo esta librería fpdf para genera ficheros pdf.
    Cuando genero el PDF, hago una llamada a la base de datos para sacar los datos. El problema es que los datos tienen caracteres extraños (tildes, eñes…) y estos no me los escribe bien. He visto en tu ejemplo que utilizas tildes y te salen de forma correcta.

    He probado a pasar estos campos con htmlentities y otras funciones, pero no consigo hacer nada.

    Me podrías decir que me falla??
    Gracias!!

  25. Mmm.. en realidad no sabría que decirte, la codificación de la Base de Datos que tengo en Mysql es la que tiene por defecto.

    Y a los datos no los aplico ninguna función.

    Podrías probar con algunas funciones de php para decodificar el texto, aunque el detalle podría ser desde que lo almacenas en la base de datos.

    La función que mencionas (y de acuerdo a php.net) dice:
    Además htmlspecialchars(), tiene un tercer parámetro opcional charset el cual define el conjunto de caracteres que serán utilizados en la conversión. Este parámetro fue agregado en PHP 4.1.0. Actualmente, el conjunto de caracteres ISO-8859-1 es usado como valor por defecto.

    Por lo que no debería haber problemas, puedes probar también con:
    utf8_decode — Convierte una cadena codificada UTF-8 a ISO-8859-1

    Descripción
    string utf8_decode ( string data )

    Esta función decodifica «data», asume codificación UTF-8 , a ISO-8859-1.

    Te repito que sería cuestión de ver como se almacenan los datos o como se los mandas desde php.

    Saludos.

    Podrías mandar una tabla con datos al email de contacto para hacer unas pruebas, porque así nada más no se me ocurre muchas ideas.

  26. Mensaje Original de Sergio, movido desde Email Contacto
    Hola Alberto:

    Te contesto al email que me comentas en los comentarios.

    He estado probando, y no hace falta que saque los campos de la base de datos para que salgan los caracteres extraños. Simplemente con poner lo siguiente, me salen mal:

    require(’fpdf/table.php’);

    //Creacion del objeto de la clase heredada
    $pdf=new PDF();
    $pdf->AliasNbPages();
    $pdf->AddPage();

    $pdf->SetFont(’Arial’,’B’,13);
    $pdf->SetTextColor(230,22,6);
    $pdf->Cell(0,10,’Currículum Vitae de: ‘.$nombrecv,0,0,’L’);
    $pdf->Ln(8);

    Con esto, Currículum se me ve como algo así: CurrA-culum (la A con ~ encima).

    Una prueba sería:

    AliasNbPages();
    $pdf->AddPage();

    $pdf->SetFont(’Arial’,’B’,13);
    $pdf->SetTextColor(230,22,6);
    $pdf->Cell(0,10,’Currículum Vitae en Español’,0,0,’L’);

    if($_GET[”navegador”] == “opera”) { $pdf->Output(’ prueba.pdf’,’D’); }
    else{ $pdf->Output(’prueba.pdf’,’D’); }
    ?>

    Esto metido en un fichero prueba-pdf.php Si lo llamas, te genera un fichero PDF y salen caracteres extraños.

    Gracias por echarme una mano.

    Salu2!!

  27. Sergio antes intentar probar tu código necesito que me expliques si el archivo table.php es una clase derivada (modificada) de FPDF, si es así me gustaría saber si es tuya o de un tercero.

    Si es tuya, no habrás modificado algo por ahí?
    Si no es tuya no será la clase?

    Puedes intentar probar con la clase original FPDF, el mismo ejemplo que me comentas, solo mandando a imprimir en la celda ese texto.

    Si tienes problemas con la clase original el error podría estar originándose desde otra parte.

    P.D. Sergio el email de contacto es buzonews@yahoo.com.mx
    La página Email Contacto proporciona dicha dirección pero el formulario no realiza el envío automático al email, te agradeceré para la próxima lo envíes =)
    Tu mensaje lo pase a este mensaje borrándolo de la página antes mencionada.

  28. Hola Alberto, me interesa mucho el ejemplo, tengo un problema similar con un formulario y una salida en PDF, que ya me tiene loco y no doy, es algo muy similar a tu salida muchas gracias de antemano..

  29. Hola Alberto. Ya te he enviado un mail a esa dirección. Perdón por escribir en la sección del contacto, pero pensé que te llegaría y que no se pondría donde se puso.

    Te escribo también aquí, para comentarte que la clase esa la saqué de http://www.fpdf.org/es/script/index.php (o eso creo, pq no me acuerdo mu bien de cual era).

    Ya me contarás.

    Salu2 y gracias!!

  30. Hola alberto:

    He trabajdo bastante con el FPDF y una vez necesité realizar una función que imprimiera texto justificado y con colores, fuentes, estilos, etc, me quedó muy bien, y la publiqué en mi sitio, creo que les puede ahorrar algo de chamba a los que necesiten formatear documentos con el FPDF. Esta en http://elticus.com/jlpdf/

    saludos.

    1. La libreria es excelente, pero tengo un inconveniente como hago para utilizarla con saltos de linea, header, y footer es que cuando la aplico me desaparece el encabezado y el footer.

      Gracias

  31. Hola!

    Me interesa mucho el codigo fuente con hiciste el reporte. Se ve bastante bien.

    Ademas estoy nueva en esto de la programacion en PHP y ni idea tampoco de como instalar la libreria FPDF, ademas estoy usando XAMPP y la verdad no se como instalarla

    YO necesito hacer reportes con datos que se almacenan en una base de datos mysql y no se como empezar y jamas en mi vida he instalado una libreria en ningun lado

    De antemanos gracias

  32. Hola te envie un comentario previo. Estuve revisando el Xampp y trae dentro de las librerias a FPDF, un paso menos, menos mal !!!!

    Ahora si me interesa el codigo fuente, si me lo puedes enviar lo mas pronto que puedas te lo agradecere enternamente para yo tambien hacer un reporte asi de bueno como el tuyo.

  33. Hola …estoy probando generar un pdf desde un archivo de texto, al igual que un caso anterior los caracteres especiales como acento, ñ y otros se generar como caracter basura, en este caso solo trabajo con lo mas simple de los ejemplos de pdf y las librerias basicas, si me podrias ayudar ya que no puedo encontrar una posible solucion
    SetFont(‘Arial’,’B’,12);
    //Calculamos ancho y posici� del t�ulo.
    //$w=$this->GetStringWidth($title)+6;
    //$this->SetX((210-$w)/2);
    //Colores de los bordes, fondo y texto
    $this->SetDrawColor(204,204,204);
    $this->SetFillColor(255,255,255);
    //$this->SetTextColor(220,50,50);
    //Ancho del borde (1 mm)
    $this->SetLineWidth(1);
    //T�ulo
    $this->Cell($w,9,$title,1,1,’C’,1);
    //Salto de l�ea
    $this->Ln(10);
    }

    function Footer()
    {
    //Posici� a 1,5 cm del final
    $this->SetY(-15);
    //Arial it�ica 8
    $this->SetFont(‘Arial’,’I’,8);
    //Color del texto en gris
    $this->SetTextColor(128);
    //Nmero de p�ina
    $this->Cell(0,10,’Pagina ‘.$this->PageNo(),0,0,’C’);
    }

    function ChapterBody($file)
    {
    //Leemos el fichero
    $fp=fopen($file,’r’);
    $txt=fread($fp,filesize($file));
    fclose($fp);
    //Times 12
    $this->SetFont(‘Times’,»,12);
    //Imprimimos el texto justificado
    $this->MultiCell(0,5,$txt);
    //Salto de l�ea
    $this->Ln();
    //Cita en it�ica
    $this->SetFont(»,’I’);
    $this->Cell(0,5,'(fin del extracto)’);
    }

    function PrintChapter($num,$title,$file)
    {
    $this->AddPage();
    //$this->ChapterTitle($num,$title);
    $this->ChapterBody($file);
    }
    }
    //directorios
    switch($mtipo){

    case AC:
    $directorio = «/home/operador/Documentos/Acuerdos/»;
    break;
    case NS:
    $directorio = «/home/operador/Documentos/Superintendencia/»;
    break;
    case NA:
    $directorio = «/home/operador/Documentos/Administrativa/»;
    break;
    }

    $nombre=$mtipo2.» Nro. «.$nficha;
    //$directorio=»/home/operador/Documentos/Acuerdos/»;
    $fichero=$directorio.$nom_archivo;

    $pdf=new PDF();
    $title=$nombre;
    $pdf->SetTitle($title);
    //$pdf->SetAuthor(‘——-);
    $pdf->PrintChapter(1,$nombre,$fichero);
    $pdf->Output();
    ?>

  34. Hola,
    Te agradecería mucho de verdad que me ayudaras mandandome el código de el reporte tuyo. Me quedan ciertas dudas en esto de utilizar fpdf que sólo puedo eliminar viendo otros programas! ;P
    Gracias.

  35. Bueno si planteas tu duda tal vez la podamos resolver, y de paso dejas un dato que puede servir para otro lector.

    Si ya la resolviste simplemente puedes decir de que trato el problema y como lo resolviste, ayudando así a otras personas.

  36. Maria respecto a tu petición ya probaste solo con el archivo de texto, es decir, probar extraer el texto del archivo y presentarlo en una página web.

    Si ya has probado y no hay problema, entonces podría ser algo relacionado con la clase realmente no le he revisado muy bien, y el problema podría estar en la codificación que utiliza.

    Ya que la he utilizado con base de datos y obtengo la información sin problemas.

    También no estaría de más revisar la codificación que utiliza el editor de texto (notepad, metapad, notepad++, etc) para guardar los datos, ya que desde ahí podría originarse los caracteres raros.

    En cualquiera de los casos mencionados anteriormente espero tu respuesta.

  37. Gracias, voy a probar presentando sobre html el archivo de texto, estube verificando el makefont, cambiando el tipo de codificacion el cual es limitado ya que existe ISO-8859-1, pero no funciona. En cuanto a generar el archivo de texto estoy trabajando con el openoffice que realmento no se que tipo de codificacion de caracteres usa…..Igual sigo probando ….Gracias

  38. Hola, yo tengo exactamente el mismo problema que Maria y otro por ahi, no logro que me envie las ñ y los acentos al PDF, he buscado muchas funciones php y ninguna me ha funcionado.

    Yo no utilizo ninguna BD mando al PDF directamente desde un form por medio del POST.

    Alguna idea o posible solucion

    Saludos

  39. Hola te mando la url de mi «problema»

    http://www.sntssjalisco.org/caja/contrato.html

    Si pones ñ o acentos en los campos de las formas el php generado te envia otro codigo.

    Los form lo envio por un post a un php te envio anexo parte del codigo

    AddPage();
    // set the sourcefile
    $pdf->setSourceFile(‘contrato.pdf’);
    // import page 1
    $tplIdx = $pdf->importPage(1);
    // use the imported page and place it at point 10,10 with a width of 100 mm
    $pdf->useTemplate($tplIdx, 10, 10, 190);

    $fecha=date(«d/m/Y»);
    // now write some text above the imported page

    $pdf->SetFont(‘Helvetica’,»,12);
    $pdf->SetTextColor(0,0,0);
    $pdf->SetXY(25, 62);
    $pdf->Write(0, $dele);
    $pdf->SetXY(80, 62);
    $pdf->Write(0, $mat);
    $pdf->SetXY(140, 62);
    $pdf->Write(0, $abono);
    // Nombre
    $pdf->SetXY(25, 81);
    $pdf->Write(0, $pate);
    $pdf->SetXY(80, 81);
    $pdf->Write(0, $mate);
    $pdf->SetXY(140, 81);
    $pdf->Write(0, $nombre);

  40. Mm… vamos por partes.
    ¿XML en un pdf?
    Si quieres imprimir la estructura no le veo problema, pero si quieres imprimir el contenido tendrías que obtener el contenido antes con php; para luego mostrar los datos que te interesan. Pero estoy seguro que lo quieres es imprimir el contenido y con formato!! yeaks!! =O

    Respecto al xsl nunca lo he utilizado, pero después de navegar un rato ya comprendo su función muy similar a las hojas de estilo en cascada (css), sin embargo también buscando no encuentro una solución “Sencilla” =S

    Pero como no quiero que te quedes en blanco te dejo algo que te puede servir de referencia:
    Sitio de Thomas Weinert el cual presento en International PHP Conference 2007 – Spring Edition lo que necesitas.
    http://thomas.weinert.info

    Presentación en PDF de Thomas Weinert, al parecer esta implementando lo que tu necesitas, sin embargo es para un CMS (como wordpress) llamado Papaya. Las diapositivas te pueden servir para darte una idea de que necesitas.

    Haz clic para acceder a xslt-and-fpdf.media.24e9f82ccf70692712c9f5fd1790b31f.pdf

    Plantillas via XSLT (este archivo no tiene extensión pero es un PDF cuanto termine de bajar agrega la extensión)
    Tiene varios diagramas y direcciones web para recursos
    http://thomas.weinert.info/xslt-templates.download.69f772c6adc4a6c4bca14b9b0d61b2a8

    FPDI Colección de Clases PHP que facilitan a desarrolladores la lectura de páginas de un PDF y usarlas como plantillas en FPDF. FPDI soporta a partir de la versión 1.2 a FPDF en su versión 1.53.
    http://www.setasign.de/products/pdf-php-solutions/fpdi/

    En esta entrada también de la wikipedia http://es.wikipedia.org/wiki/XSL-FO existe al final referencias a páginas que generan pdf con xml y xsl pero sin php, por lo que tendrás que revisarlos para tomar ideas. Inclusive mencionan una herramienta de apache.

    Ojalá te sirvan de algo, saludos.

  41. Hola recien estoy empezando con el uso de pdf y me gustaria q me envies tu codigo de ejemplo, ya que aun me cuesta asignar bien las posiciones y eso.

    Saludos muchas gracias

  42. Hola Alberto. Un favor si es que me pudieras brindar ayuda acerca de la clase fpdf. Te lo agradeceria mucho.

    Tengo un problema con la impresion de un pdf generado con la clase fpdf.

    Ya imprimi el pdf generado en mi impresora lx300 con adobe reader 7 y todo sale bien, pero mi problema es que en otra maquina con otra impresora tambien lx300 y el mismo adobe reader 7, sale unos centimetros mas abajo (como si el margen superior fuese distinto). Lo probe en otra maquina distinta con una impresora HP y el mismo adobe reader 7 y ahi el problema es peor (no solamente imprime mas abajo sino imprime mas a la derecha).
    Todo esto lo necesito exacto ya que imprimo en una factura preformateada.

    ¿Cual puede ser el problema? ¿No es que acaso la impresion lo maneja el adobe? Y si es asi, ¿no deberia imprimir igual sea la impresora una HP o una Epson etc… ya que la pagina es A4 en todas?

    Gracias de antemano por cualquier ayuda que me pudieras brindar.

    Ivan

    PD: si por favor me pudieras enviar tu codigo de ejemplo. Gracias por todo.

  43. ¡Que tal Iván! mira, el pdf una vez generado no cambia.. sin embargo (y solo es mi opinión) es mejor usar tamaño Carta, bueno solo si el A4 no es tan usual.

    El papel A4 aunque es similar no tiene las mismas dimensiones, pero tomando en cuenta lo que me dices puede ser un problema de configuración de impresora y/o programa.

    ¿Ya intentaste imprimir desde donde las pruebas te salen bien (vía red) en las otras impresoras? Si aún así no salen bien, entonces podrás revisar la configuración de las impresoras.

    Sobre todo con la LX300 ya que al ser mismo modelo no deberías tener problemas.

    El programa aunque puedes definir el área de impresión entre otros parámetros requiere de la intervención del usuario, y no creo que al generar el pdf las medidas cambien.. pero esto último solo tu puedes responderlo.

    Por cierto aunque no creo que sea eso, ya revisaste que ¿el tamaño realmente es A4?

    Ya por último debes recordar que todas las impresoras tienen margenes de impresión diferentes.. por lo que aunque definas unas dimensiones si la impresora no lo soporta simplemente el resultado será diferente.

    Lo que me sigue causando ruido es que sale distinto entre las LX300, ¿te aseguraste que fijaste bien el papel en la impresora?. Recuerdo que esa impresora es un poco especial je, je..

    Bueno espero te sirvan de algo los comentarios, saludos.

  44. Hola, por favor tengo una gran duda en lo que se refiere a Cell, tengo una tabla q lista bienes y precios la columna nombre tiene ancho 80 y de precios 20, pero en la tabla hay nombres q son tienen mas de 80 caracteres y se sobrepone sobre el precio, como puedo hacer para que corte en 80.
    Gracias anticipadamente…

  45. Mm.. la solución puede ser desde ajustar el texto a la celda hasta ocupar una clase derivada para que muestre los datos con multicell.

    La primera tentativa de solución lo puedes ver acá:
    http://www.fpdf.org/en/script/script62.php
    Fijate en el pdf de ejemplo, solo interesa la función y como se invoca.

    La segunda solución esta servida acá:
    http://www.fpdf.org/en/script/script3.php
    Para este caso si que tendrías que analizar el código, pero es muy simple la verdad =P una vez que defines la longitud de la columna lo demás es meterle datos.

    Espero te sean de utilidad esas referencias, el primer código es de Patrick Benny el segundo de Olivier tomados de Scripts de fpdf.

    Saludos =)

  46. mm.. la verdad se me hace raro tu comentario, pero bueno todo es posible..

    Has intentado con otro navegador, si entiendo que parece una solución tonta pero es cuestión de probarlo.

    Por último lo que puede hacer es brindarte un enlace para que bajes la descripción y código que te mencione en mi mensaje anterior.

    http://www.gigasize.com/get.php?d=6fwbo3yzl9f

    Una vez que cargue la página escribe el código y presiona descargar, es un archivo ZIP con lo que necesitas.

    Saludos.

  47. Hola Alberto .

    Empecé por mi cuenta investigando y pude imprimir e interactuar con la base datos, pero tengo un serio problema que no encuentro como resolver, No logro indicarle el papel, orientación o tamaño e intentado de muchas formas y lo único que consigo es que me muestre en forma vertical y tamaño carta no horizontal como necesito y tampoco puede indicarle un tamaño personalizado de papel.

    Te agradeceré si tienes algunos ejemplos de cómo lograr mi propósito ,
    e usado este formato y no consigo mi propósito

    FPDF
    FPDF([string orientation [, string unit [, mixed format]]])

    : function PDF()
    {
    $orientation=’L’;
    $unit=’cm’;
    $format=’A4′;
    //Llama al constructor de la clase padre
    $this->FPDF($orientation,$unit,$format); //no funciona
    }

    Gracias por tu respuesta.

  48. Hola buen dia a todos, me parece muy interesante todo lo que se ha publicado en este blog, hya unos tips bastante interesantes. Mi caso es que necesito realizar los contratos del instituto donde trabajo en un pdf, estoy trabajando con fpdf. Hace poco estuve intentado hacerlo con DOMPDF y pude hacer todo bien menos un detalle que es justificar el contenido de una celda de una tabla de html. Bueno fue cuando decidi tratar hacerlo con fpdf, la pregunta en si es Alberto o para todos los amigos que intervienen aca: ¿Cómo hago para formatear el texto del contrato? me explico, yo muestro el contrato en un multicell pero necesito que algunas palabras esten en negrita. Envio parte del codigo para ver si por favor me pueden ayudar… gracias de antemano espero pronta respuesta… feliz dia para todos

  49. Aqui esta parte del codigo:

    $pdf->SetFont(‘Arial’,’B’,9);
    $alto=5;
    $nombre=»Jean»;

    $pdf->SetFont(‘Arial’,»,9);
    $contrato=»Entre EL INSTITUTO MERIDEÑO DE INFRAESTRUCTURA Y VIALIDAD, (INMIVI) creado por Ley según decreto N 266 publicado en Gaceta Oficial Extraordinaria de fecha 08/AGOSTO/2006, representado en este acto por su Presidente Ing. ROBERTO EMIRO MOLINA PEÑA, venezolano, Mayor de edad, titular de la cédula de Identidad N V-13.022.515, domiciliado en esta ciudad, según Decreto N 005 de fecha 12/ENERO/2007, publicado en Gaceta Oficial del Estado Mérida N 1314 de fecha de 15/ENERO/2007, en uso de sus facultades previstas en el Artículo 13, Numerales 1, 7, y 15 de la Ley del INSTITUTO MERIDEÑO DE INFRAESTRUCTURA Y VIALIDAD (INMIVI)»;

    $pdf->ln(5);
    $pdf->Cell(196,5,’Contrato’,0,1,’C’);
    $pdf->MultiCell(196,4,»$contrato»,1,’J’);

    Necesito por ejemplo que esta parte «INSTITUTO MERIDEÑO DE INFRAESTRUCTURA Y VIALIDAD, (INMIVI)» aparezca en negrita… como lo hago…

  50. Veamos Jean, lo que quieres hacer lo veo un poco complicado, ya que la clase pide que establezca la fuente a utilizar antes de mandar la salida (el texto) con SetFont(string family [, string style [, float size]]).

    Es decir, indicas el formato del texto, sin embargo tu lo que quieres es que ese formato se aplique solo a una porción de lo que estás enviando. Existe una clase derivada de fpdf la cual se comento más arriba (https://laterminal.wordpress.com/2007/05/18/mipdf-trabajando-con-fpdf/#comment-4185) la cual te permite ese tipo de impresiones (gracias a Juan Luis).

    De momento no se me ocurre otra forma, ya que el formato se aplica entiendo al momento, podrías utilizar la clase de Juan Luis como base y analizar como aplica el formato, de esa manera podrías hacer lo que necesitas.

    Puedes revisar su página en el siguiente enlace.

    Fuente: El ticus http://elticus.com/jlpdf/?31

    Saludos.

  51. hola estaba buscando en la web sobre pdf con php y me encontre con tu blog el cual me parecio super interesante y quisiera ver si me puedes mandar el codigo para meterle mano ya que he buscado y no he encontrado mucho solo encontre como meter texto pero necesito hacer cuadros como los que hiciste tu , te antemano muchas gracias

  52. Hola!!!! estoy creando un archivo pdf, pero tengo un error a la hora de subirlo al servidor, no me reconoce las ñ’s y los acentos, ojale y me puedas ayudar!!! gracias!!!

  53. amigo me encantaria que me enviaras el ejemplo del fpdf con le que estas haciendo el reporte. y te agradecerìa mucho me explicaras un poco mas como se usa.

  54. hola, estoy creando un documento con fpdf y tu ejemplo es tiene varios elementos que me interesan, me gustaria que me enviases el codigo mucha s gracias.

  55. La verdad sigo sin entender porque algunas personas no tienen acceso a la página oficial de FPDF, tal vez sea problemas con su proveedor =S

    Bueno de todas formas dejo el siguiente enlace para que descarguen la clase en su versión 1.53 la última que salio desde el 2004.
    http://www.gigasize.com/get.php?d=nt0pnv8cw7c

    Dentro del archivo ZIP se encuentra la descripción de las funciones y atributos con los cuales trabaja la clase.

    Saludos y Feliz año 2008.

  56. Hola:..
    Ya desde hace varios años uso FPDF yh quiero aclararles que las diferencias de IMPRESION que mencionan se deben solamente al cuadro de IMPRESION de cada navegador o maquina.. en las PROPIEDADES de la IMPRESION, existe una opcion que dice: IMPRIMIR COMO IMAGEN que deben MARCAR o TACHAR o CLICKAR o SELECCIONAR y en cualquier impresora sale EXACTAMENTE como esta la hoja de impresion.

    Yo imprimo FACTURAS en mis sistemitas y que recuerde con eso NUNCA tuve problemas, y use, EPSON lx 30, 300+, Fx1050, LQ 1080, LQ 270+, Canon….varias, HP de tinta y laser, unas ultimas en EPSON y sin lios en verdad.

    Revisen eso por favor…
    Lo que hasta ahora no logro es MANDAR DIRECTAMENTE el pdf generado a la impresora…

    Es decir al usuario se le abre una ventana del navegar con el pdf geenrado.. ya sea en Acrobat Reader tanto en Windows como en Linux, o en xpdf yh de ahi debe el usuario mandar a la impresora sin lios.

    Espero haber ayudado y haber si alguien me da alguna luz que no he buscado ultimamente, pero bueno.

    Gracias

  57. Hola Alberto. Me sería de gran utilidad obtener el codigo fuente del ejemplo, que hiciste ya que tengo que realizar. Algo muy parecido para mi trabajo. Se agradece de antemano. Gracias

  58. hola, Alberto, es bueno que compartas tus conocimientos, yo empeze con EZPDF pero me encontre con el problema de cambiar el color de las fuentes, y FPDF te da más potencia «aunque mas labor a la hora de implementar» con decir, que pude hacer elipses pero nunca me dibujo una linea 😀 (^_^), y me gusto tu formulario, espero que me puedas enviar codigo y revisarlo, de antemano Gracias!! Te envio un cordial saludo!

  59. Hola Alberto, al igual que otras personas que te lo han pedido necesito que me envies el código de tu formulario porque está bien estructurado y necesito hacer algo parecido =]

    Espero que me lo puedas enviar para checarlo, lo cual agradecería mucho.

  60. hola alberto antes que nada gracias por tu ayuda desinteresada, bueno yo tambien quisiera me envies el codigo de tu ejemplo para estudiarlo PERO TAMBIEN si se podria me gustaria que me ayudes en dimensionar la hoja del papel a imprimir debo imprimir un recibo y el papel es del tamaño de 10 por 10 cms, te pido POR FAVOR me ayudes en este aspecto, te agradeceria me envies un ejemplo sencillito de este punto, bueno desearte exitos y adelante con el blog que esta buenisimo.

  61. se puede usar ese formato que tienes para leer una tabla de una bd en msql me interesa tu codigo pra ver como posicionas los campos te lo agradesco

  62. Mira el ejemplo solo es una plantilla sin datos, de esa parte se encargo otra persona, de hecho el realizo algunas modificaciones a la plantilla por los datos recuperados.

    Lo de menos es que saques la información de la tabla y vayas ajustando el contenido a la plantilla.

    Te recomiendo que coloques las lineas y cuadros a continuación de la información que muestras para que no tengas dolores de cabeza =)

    Saludos.
    P.D. Código Enviado

  63. Hola que tal saludos a todos, antes que nada felicidades por tu bloc esta muy interesente y facilmente explicado, yo tambien estoy trabajando en este tema del FPDF y tengo un PROBLEMISIMA!!! lo que pasa es que cuando realizo mi formato en FPDF solo llega a la mitad de la hoja y la mera verdad no se ni porque hace eso, segun lo tengo configurado como tamaño carta pero solo me imprime la mitad de la hoja 😦 ojala puedas ayudarme con esto…

    Oye por cierto un FAVORSOTE!! mandame a mi correo el codigo que ocupaste en el ejemplo de tu PDF porque veo que a ti si te imprimio completo la hoja 😦

    Porfitas si…

    Gracias de antemano y un saludo muy cordial 🙂

  64. Un saludo Linda, en tu caso puede ser que lo que estas mandando a imprimir es demasiado para la hoja, aunque en esos casos normalmente la clase se encarga de pasar el resto del documento a otra hoja.

    Sería bueno que revisarás que realmente la hoja es suficiente para la salida.

  65. Buen día Alberto!

    Me ha gustado mucho lo que hay en este blog. Quisiera que me enviaras tu código porfis. Voy a estar revisando los enlaces que distes en tus posts.

    Ahorita se me presentó un problemilla con colocar una línea en el footer, sé que debe ser tonta la solución, así que en eso estoy.

    Saludines.

  66. hola alberto agradezco tu contestacion 🙂 gracias. Me pregunto si podrias enviarme tu ejemplo a mi correo, te lo agradeceria mucho, abrazos y saludos.

  67. Hola aqui de nuevo muchisimas gracias por tu enviarme el ejemplo, como muestra de mi gratitud invitare a más personas a que visiten tu blog, un abrazo y un saludo. 😀

  68. Hola, te cuento que yo trabajo desde hace tiempo con fpdf pero tengo un problema que no he podido resolver, el asunto es que necesito imprimir muchas columnas hacia la derecha, por lo que necesito hacer un auto salto de página (tamaño carta) de alguna forma, a la siguiente página, de la derecha, para poder seguir imprimiendo la información, bueno ese es el problema que no he podido, así que si tienes alguna forma o alguna idea, te lo agradecería.

    salu2 desde Chile

  69. Hola..
    bueno he leido tanto y a la hora nada de mi problema.. tengo problemas con las ñ y con los acentos. No veo un ejemplo acerca de alguna libreria baje ufpdf pero no me funciono.
    Solo esta relacionado con la codificacion UTF-8 o a traves de las font AFM podria solucionar mi impase.
    Por ultimo alguien tiene un ejemplo de multicell?
    Gracias desde Colombia

  70. En el caso de MultiCell existen varios ejemplos en la página de FPDF.

    Para recuperar un cadena sin perder los acentos o la ñ basta con aplicar la siguiente función:
    utf8_decode (PHP 4, PHP 5)
    Descripción
    utf8_decode — Convierte una cadena codificada UTF-8 a ISO-8859-1

    Devuelve un string codificado en ISO-8859-1
    utf8_decode ( string $data )

    Saludos.

  71. Mensaje copy/paste
    Autor Erika:

    Hola ojalá alguien me pueda ayudar…

    Ya generé mi pdf con la librería FPDF pero se me presenta el problema de que se recorre todo lo que escribí en éste a la hora de mandar a imprimir el valor de una variable desde un formulario, es decir, todas las líneas, los rectángulos y los títulos se recorren hacia abajo y se desconfigura todo mi formato :s ¿Alguien sabe qué puedo hacer para que eso ya no me pase?

    Ayuda por favor!!!!!!

  72. Bueno erika lo que pasa es que cuando genere ese formato la información la ingrese directamente a modo de comprobación.

    Sin embargo también nos paso lo que comentas, la solución fue acomodar las instrucciones:
    imprimir la información de la BD recuperada o pasada de un formulario.
    imprimir las líneas o cuadros.
    imprimir las imágenes.

    No en ese orden precisamente, se acomodaron las instrucciones de tal modo quedará igual a la salida esperada.

    Espero que con eso puedas solucionarlo, prueba con unas primeras lineas.

    Sino se resuelve escribe tu consulta.
    Saludos.

    P.D Por favor escribe en los post correctos, ya que tu comentario esta en un mensaje NO relacionado.

  73. Que tal amigo por favor enviame el codigo fuente ya ques estoy super pegado con unas alineaciones para un formulario.
    Gracias de antemano

  74. Hola alberto ya coloque la carpeta en C:\AppServ\www\fpdf y en C:\AppServ\www deje el archivo fpdf.php y al correr el ejemplo1 el tuto1.php me genera este error could not launch acrobat .

    Tengo instalado el Adobe Reader 8

    Te agradezco la atencion

  75. hola alberto, me gustaria que me mandaras tu codigo, estoy empezando con el fpdf y asi aprendo mas, porque lo veo muy completo. Un saludo

  76. @alic:
    Nope no es problema de la clase, tengo instalada acrobat 8.1.2, es decir actualizado y no me genera errores.

    Lo que puede estar pasando es que tal vez no se instalo correctamente acrobat o el plugin en el navegador.

    Ya intentaste probar desde otro equipo, es decir la tuya funcionando como servidor y desde el navegador del cliente con el plugin de acrobat cargar el pdf.

    Saludos.

  77. Hola alberto, estoy empezando con fpdf y veo que tu ejemplo es muy completo. Me gustaria que me mandaras tu codigo, a ver si avanzo con mi futuro formulario en pdf…
    Un saludo

  78. Hola alberto de antemano gracias por todos los aportes que nos has facilitado esta excelente tu blog porfa si no es mucha molestia en cuanto puedas me puedes facilitar el codigo del ejemplo ya que actualmente estoy trabajando en un proyecto de nomina en php y necesito hacer el recibo en un archivo pdf y pues recien estoy iniciando en esto de fpdf

  79. Hola!! muy buen aporte!.. .. es justo lo que andaba buscando…!!! me podrias enviar el codigo del ejemplo?.. te lo agradeceria mucho!

  80. Hola Alberto, estoy empezando a utilizar fpdf y me gustaría que me madaras tu ejemplo para darme una mejor idea de como se utliza, necesito crear un PDF creando tablas con los datos de una BD, teng una duda enorme, a momento de sacar los datos son el Select, si se pueden usar los datos de 2 tablas y con variables… me explico mejor, algo así:
    select b.nombre,b.paterno,b.materno from proyecto_nuevo a, responsable b where b.clave_proy=’$busqueda’ and a.clave_proy=b.clave_proy order by paterno,materno,nombre

    donde $busqueda es por decirlo así una variable global??

  81. hola yo de nuevo otra gran duda, necesito imprimir la tabla en forma vertical, es decir así:

    NombreCampo | dato de BD
    ________________________________
    |clave proy. | PIAG05-1
    |responsable | Jesus Gonzalez Morales
    |Cuerpo | BIOTECNOLOGIA
    ———————————————

    es posible hacer esto??? alguien que me pueda responder????

  82. Bueno Alma tranquila, veamos la primera pregunta.

    Si se puede hacer lo que dices, a final de cuentas lo que hagas o dejes de hacer con la BD no le interesa a la clase FPDF.

    Lo que realmente le importa a la clase es que le mandes como parámetro de salida, es decir, una vez que ya tengas la información de la BD tú te encargas de darle el formato.

    Así que trabaja con tus consultas como normalmente lo haces con php.

    Respecto a la segunda pregunta NO lo he intentado, existen varios scripts en la página de FPDF para imprimir tablas, tendrías que revisarlos y utilizar el que más se ajuste a lo que necesitas.

    Lo más común es presentar los datos así:
    Campo1 | Campo2 | CampoN
    texto1 | texto2 | textoN
    texto1 | texto2 | textoN
    texto1 | texto2 | textoN

    En realidad lo que tu quieres hacer es lo mismo, como bien dices en forma vertical, por lo que tendrías que modificar algún script para generar la tabla donde lleves el control del nombre del campo a mostrar y el contenido.

    En este comentario hago mención de los scripts que a mi parecer son los mejores para generar tablas.
    https://laterminal.wordpress.com/2007/05/18/mipdf-trabajando-con-fpdf/#comment-2749

    Otra propuesta para lo que necesitas es utilizar el script tal cual, solo organizar los datos de tal manera que la salida en el pdf se ajuste a lo que necesites.

    Por ejemplo guardas una matriz con todos los valores y se lo envias de la forma:

    nombre campo -> valor

    Saludos.

  83. Los acentos y eñes se manejan con utf8_decode

    $string = utf8_decode(‘José Núñez Mújica’);
    $this->pdf->Cell(0,5,$string,1,1,’L’);
    $this->pdf->Ln(5);

    Además el header debe ser:
    header(‘Content-type: application/pdf; charset=»utf-8″‘,true);

  84. Hola Alberto, bueno primero que todo felicitarte por lo que haces, segundo , quisiera tu ayuda urgente sobre un sistema , estoy trabajando en un sistema de alumnos en php, ingresa notas e ingresa de todo, mi pregunta es si me pudieras ayudar con un fpdf para hacer informes de notas, por alumno , porfavor espero tu respuesta a mi mail marioespinozadiaz@gmail.com , la misma de mi msn , porfavor necesito ayuda!!!!!!!!!!!!!!!!!!!!!!

  85. tengo una pregunta. Se puede incluir un salto de linea dentro de un array, tal q asi

    $cabecera=array(
    «CODIGO\nCLIENTE / TM»,»CODIGO………..

    si existe una forma dime como se hace

    Muchas gracias y un saludo

  86. Sinceramente NUNCA lo había probado ya que por lo normal genero el (diseño del) pdf linea a linea.

    Además recuerda que la salida se realiza de acuerdo a los métodos de la clase.

    Es decir, en tu pdf no obtendrías como salida:

    CÓDIGO
    CLIENTE / TM

    Ya que la instrucción para salto de página es utilizando el método Ln. $pdf->Ln();
    http://www.fpdf.org/es/doc/ln.htm

    Para mandar la salida tendrías que hacerlo de la siguiente manera:

    $pdf->Cell(0,4,$cabecera[0],0,1,’L’);
    $pdf->Cell(0,4,$cabecera[1],0,1,’L’);

    Podrías utilizar un ciclo pero el ejemplo es muy sencillo para eso.

    La salida sería algo como esto:

    CODIGO1 CLIENTE1 / TM
    CODIGO2 CLIENTE2 / TM

    El salto de página no se muestra ni se toma en cuenta.

    Lo siguiente no lo he probado, pero se me ocurre que a través de una función podrías mandar a imprimir lo que tienes en el array de cabecera con instrucciones Cell con Ln.

    En resumen la salida en el pdf solo se logra con los métodos de la clase.

    Saludos.

  87. Ola de nuevo. Tengo otra pregunta. Como detecto q se ha cambiado de pagina. Es algo relacionado con AddPage()?

    Respondeme cuanto antes t lo agradeceria

    Un saludo y gracias

  88. Mm… lo que preguntas queda fuera del manejo de la clase. De hecho la clase por si misma es básica debido a eso han surgido variantes.

    No quiero decir que sea mala o insuficiente, repito solo es una base y a partir de ahí se le implementan mejoras.

    Hay que recordar que es gratuita, una donación a la comunidad 🙂

    Lo que tu quieres y si no me equivoco es manejar ese evento o lanzar alguna acción a partir de ese evento. Porqué mejor no replanteas lo que quieres hacer.

    Saludos.

  89. Hola:

    Primero, permiteme felicitarte por que te das tiempo para ayudar a los estudientes mortales…, quisiera saber si es posible que me enviaras tu ejemplo, pues estoy en problemas con esto de los reportes y el uso de la libreria fpdf me parece bueno.

  90. hola otra vez. el problema anterior ya lo solucione, pero me ha surgido otro, veras. Tengo que generar un documento pdf con varias hojas. Asta aqui todo bien pero el problema es q unas son verticales(portrait) y otras horizontales(landscape) y dependiendo de como sean me gustaria incluir un cabacera(header) u otra. No se si puede hacer. Gracias d nuevo.

  91. Bueno ahí te tocará adecuar el método HEADER a tus necesidades.

    Como recordarás algunos métodos como el encabezado y pié de página están vacíos, por lo que se recomienda generar otra clase que herede de FPDF el nombre de esta clase es lo de menos.

    En tu caso de forma explícita tienes que indicar la orientación de la página en el método AddPage().

    Así algo rápido, sería llamar el método del Header con nuevos valores, pasando el header adecuado según la orientación de la página.

    Quedaría más o menos así:

    function Header($orientation = 'P', $txt='')
    {
    //Logo
    //$this->Image('logo_pb.png',10,8,33);
    //Arial bold 15
    $this->SetFont('Arial','B',15);

    if($orientation == 'P')
    $w = 200;
    elseif($orientation == 'L')
    $w = 260;

    if($txt == '')
    return;

    //Título CM
    $this->Cell($w,10,$txt,0,0,'C');
    //Salto de línea
    $this->Ln(20);
    }

    En el script solo realizo la llamada:

    ...
    $pdf->AddPage('L');
    $pdf->Header('L', 'Encabezado para Landscape');
    $pdf->Cell(0,4,'HOJA DE PRUEBA ESTO DEBE SER LA No 1',0,1,'C');

    $pdf->AddPage();
    $pdf->Header('P', 'Encabezado para Portrait');
    $pdf->Cell(0,4,'HOJA DE PRUEBA ESTO DEBE SER LA No 2',0,1,'C');
    ....

    Si encuentras una mejor forma adelante compartela =)

  92. permiteme felicitarte por que te das tiempo para ayudar a los estudientes mortales…, quisiera saber si es posible que me enviaras tu ejemplo, pues estoy en problemas con esto de los reportes y el uso de la libreria fpdf me parece bueno.

  93. hola como estas espero y super, el motivo es por un fa personal estoy haciendo un reporte con esta clase pero esta bien feo mandame un ejemplo porfa bien vacano para adaptar al mio y se vea bonito te doy la url del reporte para q lo veas http://www.inder.eme.com.co/imprimir.php?rg=123456789 esta muy feo porfa ayudame q estoy contra entrega gracias espero tu pronta respuesta.

    PD: bueno hay q tener en cuenta q tiene mucha informacion pues porq consulta de postgre pero es q yo pa poner bonito eso si soy malo….gracias de antemano!!

  94. Bueno si quieres apoyo con diseño pues ya valio 😛 es decir, tampoco soy bueno con eso.

    Lo único que te puedo recomendar es que primeros hagas un diseño preeliminar en papel y lo trates de pasar a código con la clase, sino es posible haz adaptaciones. De preferencia utiliza una tabla (instrucción Multicell).

    Pero con la solicitud de enviarte el ejemplo no hay problema.

    Saludos.

    P.D. Después de darle un vistazo a tu pdf la otra recomendación es NO dejes tanto espacio entre líneas =S

  95. Bueno después de darle una revisada la clase que mencionas es una mejora de fpdf y otras clases.

    Para no divagar de lo que preguntas te respondo que si se puede, de hecho lo que se hace es utilizar:

    Rotación (en su caso de texto) el ejemplo se encuentra en el script Watermark
    Transparencia con rotación (también aplicado a texto), ejemplo Transparency.

    Con los ejemplos debería bastar un saludo.

  96. hola buenos dias, necesito una ayuda de ustedes por favor necesito realizar un reporte en fpdf pero necesito utilizar mas de 5 multicell es decir tengo mas de 5 campos q exeden la celda, me vendria de su ayuda…gracias

  97. Hola, por favor me podrias enviar el código del ejemplo,me parece interesante, y tengo una pregunta:
    Hasta ahora te funciono todo bien en cualquier navegador?

  98. q tal amigo sabes me gustaria q me envies el ejemplo q relaizaste si xfa t lo agradeceria rearto y algunos manuales mas de como manejaer esta lobreria si bueno bye….

  99. estimado,
    estoy realizando un aplicacion web en la cual realizo informes en pdf ha tenido varias problemas pero con ayudas de preguntas ya hechas en foros he podido ir solucionado los inconvenientes.
    Vi tu ejemplo el cual diseñantes, GUUA, genial, DESEARIA SI ME PUDIESES ENVIAR TU CODIGO.

    GRACIAS
    FESPARZA@ELTIT.CL

  100. Hola, quisiera que me pases el codigo del ejemplo básico de fpdf. Y otra cosa, puedes explicarme x mail como debo instalar la libreria?, la baje de la pagina fpdd. org es un zip pero tiene varias carpetas y archivos y no se que es lo que tengo que instalar y tampoco tengo idea en que carpeta lo tengo que hacer, desde ya muchisimas gracias x tu tiempo.

  101. Mira Nani, la carpeta la tienes que copiar al directorio donde tengas tus archivos php, también puede quedar al mismo nivel y utilizar con varios proyectos, esa es tu decisión.

    Ya te envíe el script.

  102. Hola Alberto,
    Estoy iniciandome en esto del PHP y he visto tu ejemplo para crar PDF y me parece buenisimo, te importaria mandarme el ejemplo?.

    Saludos

  103. Hola!

    Podrías enviarme el código fuente?

    Estoy empezando a trabajar con esta herramienta y no se muy bien como funciona

    Muchas gracias.

  104. me pueden enviar el codigo de Ejemplo básico de fpdf el que parece una factura o me pueden ayudar necesito dezplegar dos tablas en un amisma pagina ose el encabezado y detalle de una factura por fa

  105. Luis como ya se ha mencionado antes, no importa cuantas tablas manejes.

    Al final de cuentas imprimes lo que necesitas, solo es necesario hacer la consulta para obtener los datos que te interesan y presentas la información con los métodos de la clase.

    Saludos.

    Aquí un poco de código:

    $pdf->AddPage('L');
    $pdf->Header('L', 'Encabezado para Landscape');
    $pdf->Cell(0,4,'HOJA DE PRUEBA ESTO DEBE SER LA No 2',0,1,'C');

    $result = mysql_query('SELECT * FROM grupos ORDER BY g_nombre',$link);
    while($row = mysql_fetch_row($result))
    {
    $pdf->Cell(40,10,$row[1],1,1);
    }

    Tabla

    CREATE TABLE IF NOT EXISTS `grupos` (
    `g_clave` int(11) NOT NULL auto_increment,
    `g_nombre` varchar(64) NOT NULL,
    PRIMARY KEY (`g_clave`)
    ) ENGINE=InnoDB DEFAULT CHARSET=latin1;

    INSERT INTO `grupos` (`g_clave`, `g_nombre`) VALUES
    (1, ‘Generales’),
    (2, ‘Inventarios’),
    (3, ‘Clientes’),
    (4, ‘Proveedores’),
    (5, ‘Mov. de Inventario’),
    (6, ‘Ventas’),
    (7, ‘Compras’),
    (8, ‘Logística’),
    (9, ‘Administración’),
    (10, ‘Privilegios’);

  106. diskulpa una pregunta mejor dicho una consulta mira tengo un sistema donde genero una consulta envio esos datos como varibles a mi pagina del fpdf al llegar los datos todos llegan exepto la imagen, dela imagen solo llega el nombre y su extension komo podria mostrar esta imagen en mi documento fpdf??? tu sabes??

  107. Mmm.. no entiendo muy bien, vamos a centrarnos solo en la imagen.

    Cuando recuperas la información de esa consulta que tipo de información es la imagen, es decir, tienes la imagen en la BD o solo la referencia a la ruta con nombre y extensión.

    Si es el primer caso nunca lo he realizado =S si es la segunda, con esa ruta, nombre y extensión solo haces una llamada al método
    Image.

    Ejemplo

    $pdf->Image('imgs/logo.jpg',10,10,17,0,'','http://www.fpdf.org');

    En la página de fpdf en el tutorial 2 puedes ver como se inserta la imagen.
    http://fpdf.org/es/tutorial/tuto2.htm

    Fuente: fpdf

  108. asi es es el 1er caso tengo el nombre de la imagen en la base de datos y la imagen en si en una carpeta,yo genero mi consulta me arroja datos, esos datos los envio mediante un post y los cacho en variables en el fpdf al llegar esos datos llegan solo ke la imagen en lugar de mostrarla solo meda su nombre

    lo pongo asi

    $pdf->Image(«$nombre_variable», 30, 100 , 150 ,120 ,»JPG» );

    y yo kiero ke esta se muestre, aun no puedo konseguirlo

    alguna idea????

  109. Bueno creo que no me dí a entender bien, el primer caso se refiere a guardar LA imagen en la BD como un tipo BLOB

    El segundo caso es la ruta, nombre y extensión de la imagen como una cadena de texto.

    Por tus dos mensajes anteriores entiendo que tu problema se refiere al segundo caso.

    Ya comprobaste que te llega por POST los datos de la ruta de la imagen, ya intentaste imprimir la imagen sin el pdf, es decir, solo con html.

    La ruta no tiene caracteres que tengas que «escapar» en php.

    Bueno de momento es lo que se me ocurre a ver si me puedes enviar un enlace para un ejemplo en línea o subir un ejemplo en zip de lo que estas haciendo para probar.

    Saludos.

  110. hola ketal

    ya lo he conseguido:

    es asi
    $pdf->Image(”$nombre_variable”, 30, 100 , 150 ,120 ,”JPG” );

    el nombre ba entre comillas, y tenia la imgen en otra carpeta por eso no la mostraba
    jeje… sorry

    gracias d tododos modos amigo

    ya te enviare un ejemplo a tu mail
    de komo lo asia pake lo beas bye

  111. Te intente responder por email pero tu dirección esta mal =-/

    Bueno te dejo la respuesta aquí, esperando que también le sirva a otros.

    Actualmente utilizo Internet Information Server (IIS), pero es igual en Apache.
    Mi ruta de carpetas en el servidor es: C:\Inetpub\wwwroot\www
    Una vez que descargaste la clase debes tener por lo menos lo siguiente:
    Nombre tipo
    doc carpeta
    font carpeta
    tutorial carpeta
    fpdf.css hoja de estilo
    fpdf.php archivo php

    Descomprimes (sacas los archivos del ZIP) hacia otra carpeta con cualquier nombre (sin espacios) por ejemplo FPDF. Entonces quedaría: C:\Inetpub\wwwroot\www\FPDF

    Cuando necesites utilizar la clase creas un archivo PHP y llamas el archivo de la clase de la siguiente manera:

    require(‘fpdf/fpdf.php’);

    Aquí la referencia es Carpeta/archivo.php si estuviera niveles más arriba, se tendría que indicar.

    Directorio_servidor
    |-FPDF
    |-mipdf.php

    Ejemplo de uso -código del manual de fpdf-:

    <?php
    require('fpdf/fpdf.php');

    $pdf=new FPDF();


    AddPage();
    $pdf->SetFont('Arial','B',16);
    $pdf->Cell(40,10,'¡Hola, Mundo!');
    $pdf->Output();
    ?>

  112. Hola!
    Me parece excelente que compartas las cosas que vas aprendiendo con la comunidad desarrolladora…
    Quería ver si me puedes ayudar con un problema que tengo…
    Resulta que puedo generar mi pdf sin nigún problema, pero el archivo generado siempre pesa 887kb, y es de una hoja, con menos texto que tu ejemplo, y el tuyo pesa 3.2kb.
    Lo único que noto distinto es que yo ocupo el font «FreeSerif» en vez de Arial (que no lo tengo)…

    Sabes qué podrá ser?
    De antemano muchas gracias

  113. Bueno aunque suene un poco tonto, ya probaste con alguna otra letra que tengas en el sistema.

    Cito lo siguiente en el Tutorial 7:

    Existen dos formas de usar una nueva fuente: incluirla en el PDF o no. Cuando una fuente no se incluye, se busca en el sistema. La ventaja es que el fichero PDF es más pequeño; sin embargo, si la fuente no está disponible en el sistema, se usa otra como sustituta. Así que es aconsejable asegurarse de que la fuente en cuestión está instalada en los sistemas de los clientes. Si el fichero está destinado a una audiencia numerosas, es mejor incluir la fuente.

    En el mismo tutorial (visita la página de fpdf) viene al final una sección con título Reduciendo el tamaño de las fuentes TrueType, en el cual explican como reducir el tamaño.

    De momento lo único que se me ocurre para tu problema, prueba y nos comentas el resultado.

    Saludos.

  114. Hola Alberto,
    Muchas gracias por responderme!
    Mira, efectivamente si le cambio el font logro bajar el tamaño del archivo generado, lo más que logré fue dejarlo en 245kb.
    Tengo la esperanza de que si lo dejo con «Arial» podría quedar más liviano aún, pero logro hacerlo, en el tutorial enseñan a hacerlo utilizando una librería de wiindows, pero no tengo windows yo…

    Sabes si en alguna parte se puede bajar esa fuente? según veo necesito arial.php y arial.z

    Muchas gracias nuevamente!

    Saludos.

  115. Hola denuevo,
    Finalmente instalé una máquina virtual y seguí los pasos al pie de la letra…
    ahora hago un pdf que dice «hola», pero sigue pesando harto…
    me podrias mandar tu código para ver cuanto me pesaría a mí?

    De antemano, muchas gracias!

  116. Buenos dias a todos, estuve leyendo el foro y todo esta relacionado con la clase FPDF y tambien uso esta libreria que hasta ahora me a dado buenos resultados, les comento que he agregado codigo a las clases de header y Footer dentro de la clase FPDF, para una configuracion por defecto, pero mi problema ahora es q mis reportes necesitan imprimir un codigo y alli es donde estoy estancado, y e intentado pasarle un parametro a la clase FPDF pero no lo coje, si hay alguien logro hacer eso por favor indicarme como lo hizo.

  117. Que tal Gilmer, seria bueno ver un ejemplo de lo que mencionas porque me puedo imaginar muchas cosas =P

    Si revisas en el blog existen en la parte superior 3 pestañas u hojas como quieras llamarle, la última dice fpdf ahí encontrarás enlaces a otros post que tal vez te puedan ayudar.

    Saludos.

  118. Si Ok. sucede que agregue codigo en el metodo header y Footer de la Clase FDPF para configurar mis reportes, con cabeceras y pies de pagina, como nombre de la empresa, logotipo, area, numero de pagina.
    Pero como cada uno de estos reportes deben estar codificados, mi problema era eso, como enviar ese codigo y hacer que lo reciba el metodo Footer, asi q al momento de llamar a la Clase FDP
    $pdf->AddPage(«L»,»SIAD-ABAS-002″);
    $pdf->Output(«»,»»,»SIAD-ABAS-002″,»L»);

    paso el parametro SIAD-ABAS-003y es alli donde estaba la solucion a mi problema.

  119. Hola! Me estoy iniciando en programar con fpdf ya e visto la pagina donde salen tutoriales y e podido ver como es, estoy haciendo un modulo de reporte y quisisera un poco de ayuda.

  120. Hola necesito hacer unos reportes de un sistema de inventario, y quisiera hacerlos en formaro pdf. estoy trabajando con Cakephp, y quiero generar un reporte en pdf con todos los registros de la base de datos para lueo imprimir eso…..si tienes alguna idea de como hacerlo, por favor ayudame, por que no logro hacerlo….gracias

  121. Bueno Peter muy respetable tu punto de vista, pero en más de una ocasión me ha servido lo que comparte mucha gente a través de blogs o foros.

    Saludos y gracias por los comentarios.

  122. Muy interesante su sitio… que bueno que se compartan opiniones… soy nueva en php y también he tenido y tengo problemas en el camino y gracias a los FOROS Y A INVESTIGAR he podido salir adelante.. .

    Saludos

  123. Claro irene de nada sirve que le den a uno todo en bandeja de plata, es necesario aprender por cuenta propia.

    Si tienes algún problema con fpdf (o php) puedes dejar un comentario y veremos como te podemos ayudar.

    Saludos.

  124. Hola buenos dias estoy interesada en el codigo de pdf que tienes como ejemplo es muy interesante ya q estoy trabajando con reportes full como ese… gracias

  125. hola amigo:
    espero estes bien, no se si aun tienes este codigo estoy comenzando en la programacion y estoy sufriendo para hacer reportes con pdf si me puedes enviar el codigo te lo agradezco, soy de caracas venezuela

  126. Hola, como están. Estoy aprendiendo a usar FPDF y me surgen las dudas a medida que avanzo… ¿Cómo puedo hacer para agregar una línea AL FINAL DE LA ÚLTIMA HOJA generada? (ésta consulta me lleva a otra: ¿se puede determinar la cantidad de páginas que se van a generar según una determinada información?). Gracias de antemano y saludos…

  127. Hola de nuevo. Agrego otra consulta que está relacionada también: No puedo conseguir que el título del documento a imprimir solamente aparezca en la PRIMERA página… Gracias nuevamente y saludos…

  128. Bueno, pude solucionar algo: para que aparezca el título solamente en la primera página generada hay que agregar los siguiente en la función Header()

    if($this->PageNo() != 1)
    return;

    Saludos…

  129. hola me parece excelente el ejemplo que hiciste ……por favor mandame el codigo …..es de vida o muerte…..por fa
    te agradezco de antemano la ayuda que das a todas las personas que como yo necesitan una manito gracias….

  130. hola… he visto el ejemplo que pones y esta excelente.. estoy iniciando con fpdf para un proyecto que tengo k hacer y me es necesario el uso de pdf´s .. agradeceria que pudieras mandar el codigo del ejemplo.. ya que seria mucho mas facil guiarse viendo un ejemplo mucho mas complejo y estructurado… gracias de antemano

  131. Te agradeceria me enviaras el codigo de ejemplo para poder entender mejor el fpdf.
    Estoy con un proyecto en el que tendre que realizar un documento similar al que tu has sacado.

    Gracias de antemano.

  132. Disculpa me podrias pasar el codigo ese pdf, sino es tanta molestia.

    Buen blog, sigue asi y llegaras mas lejos de donde estas. Pocos blog veo que tengan bastantes comentarios como los tuyos.

    saludos..

  133. Me gustaria recibir el ejemplo del que hablas, y el cual se puede apreciar me parece muy interesante… Otra cosa me puedes colaborar con la publicacion de datos desde una base de datos… de antemano agradezco tu colaboracion….

  134. Hola, me parece un ejemplo bastante completo. Tengo que aprender a usar esta libreria para un trabajo y creo que el codigo para generar el pdf que tienes en la web de ejemplo me vendria muy bien para ello.
    Gracias de antemano.
    Saludos

  135. Hola Alberto.
    Estoy haciendo un programita con php y mysql.. nevegando encontre tu ejemplo y es justo lo que necesito.. me puedes pasar el ejemplo.
    Gracias.

  136. Con el ejemplo sencillo:
    AddPage(); // Agrega una hoja al documento.
    $pdf->SetFont(’Arial’,’B’,16); //Establece la fuente a utilizar, el formato Negrita y el tamaño

    //La siguiente instrucción escribe el siguiente mensaje.

    $pdf->Cell(40,10,’Hola Mundo xDD Ejemplo sencillo de un documento PDF con la clase en PHP FPDF’);
    $pdf->Output(); //Envía como salida del documento
    ?>

    Me sale el siguiente error:

    Adobe REader could not open ‘AcrCR1.tmp’ because it is either not a supported file type or because the file has been damage (for example, it was sent as an email attachment and wasn’t correctly decoded.

    Alguien me puede ayudar!!

    Saludos
    Carolina

  137. Hola Alberto, he leido todos los comentarios que hacen en tu blog, muy buenas las aclaraciones, estuve leyendo arriba segun tenia una duda henry sobre a la hora de imprimir una imagen en el documento pdf, lo mio es algo parecido, osea en BBDD (MySQL) guardo la referencia del camino dnd esta guardada la imagen y cuando la imprimo lo que me sale es el nombre, pero mi problema es que quiero imprimir la imagen dentro de una tabla donde hay otros campos de tipo texto
    Parto de una consulta a la BBDD que me devuelve un arreglo de datos luego uso la funcion Row que me va pintando las celdas con su contenido, pero el lio es que realmente no se como unir la funcion esa para que me imprima en ese campo la imagen que deseo dentro de la tabla(en la fila). Realmente no se si me explique bien por aqui, pero nada aqui esta mi correo para que me contactes y me digas si conoces alguna solucion al problema

  138. Hola a todos,
    Los comentarios de esta pagina me han servido mucho.

    Yo tenia problemas al visualizar los acentos en un PDF, y la letra Ñ. El caso, es que yo lo recuperaba de una cadena fija, con lo cual era problema de FPDF.

    ¿Como lo resolví? Mi problema concreto es que estaba guardando el fichero .php en el formato Western Mac Os Roman. Con un editor de textos avanzado, cambie el formato a Windows Latin 1, y funcionó a la primera.

    Espero que le sea de ayuda a alguien. Gracias.

  139. hola a todos se que ya es un poco tarde de la fecha de inicio del foro pero estoy trabajando con unos datos en php y me gustaria ver tu codigo fuerte de tu prueba basica y sencilla, ya soy nuevo en esto, y apenas estoy iniciando con lo que es el fpdf pero tu ejemplo me ayudaria mucho si puedieras enviarmelo. gracias

  140. Hola que tal Gustavo y a todos los que comparten este foro, paso a contar mi inquietud. Yo configuré para poder enviar los datos de un formulario a un pdf para poder imprimirlos. Configuré para imprimir en unpreimpreso en A4 y en mi impresora epson cx5600 sale perfecto, cuando lo pruebo desde otra no me sale igual. No respeta las posiciones declaradas. Probé lo que indicó una persona en el foro seleccionando la opción imprimir como una imagen, pero el problema persiste. Si me pueden ayudar estare agradecido, si no tambien dado a que me dieron un espacio para solicitar ayuda!!!! Cualquier opinión es bien recibida!!!!

  141. Situación: Necesito crear dos documentos PDF. Uno tipo formulario (con celdas y dentro de ellas sus contenidos) y otro que corresponde a un contrato (con texto enriquecido, todo justificado).

    Para crear el primer documento PDF, tipo un formulario, en donde necesito ubicar sus contenidos dentro de celdas utilizo las clases originales del Fpdf en donde además de los contenidos se le puede agregar la función header y footer para que éstos se repitan EN CADA una de las páginas del documento. Por ejemplo en el Header va el Logo de la empresa y la fecha, y en el footer debe ir el número de página (tipo X de N) y una leyenda.

    Para otro documento en donde necesito que contenga texto enriquecido (puntualmente porque necesito que el texto esté justificado) creo un documento utilizando las librerías de JLpdf muy práctico ya que si por ejemplo quiero una parte del texto en negirta le agrego los comandos (similares al html) pero utilizando estas librerías no puedo hacer que aparezca la cabecera y el pie de página EN CADA una de las páginas del documento como lo podía hacer en el primer documento.

    Parecería que funciona una cosa o la otra pero no ambas juntas. Alberto, he probado realizar algunas modificaciones pero parecería que hay conflictos y se producen errores. Hay alguna solución? Podrías pasarme un ejemplo simple para generar un documento con texto enriquecido pero que además se le pueda implementar un header y footer y que éstos se repitan en cada una de las páginas del documento. Muchas Gracias. Christian

  142. ¿Ya revisaste en la página fpdf del blog si alguna otra clase te es útil?
    Por ejemplo TCPDF.

    Ya tiene algo de tiempo que no utilizo la clase para pdf ni sus derivados pero hasta donde recuerdo los métodos base no sufren alteraciones, o al menos no aquellos relacionados con el encabezado y pie de página.

    Sería bueno que hicieras la prueba con un documento simple, llamando los métodos de encabezado y pie.

    Saludos.
    P.D. Espero tus comentarios.

    1. Hola, (aclaro, soy otro Christian, jaja).

      Yo he intentado insertar una imagen de fondo usando la funcion header y no lo coge. Tampoco funciona el footer, donde quiero indicar el número de página. En otro fichero que solo utilizo fpdf si funcionan. O bien los métodos base si sufren alteraciones o de alguna manera lo estoy llamando mal.
      También intenté con tcpdf como le habías sugerido pero el problema de la función writeHTML (que está muy currada por cierto) es que no respeta el margen inferio y el texto sobrepasa el footer.
      Volviendo a fpdf y jlpdf, pregunto: ¿realmente no hay manera de hacer un texto justificado y que cada página tenga un encabezado (y esta con imagen de fondo que ocupe toda la página) y un pie de página (footer) ??
      En la web de elticus .com no se comenta el tema. El foro no funciona y en los comentarios no hay nada relacionado.
      Gracias,
      Otro Christian

  143. hola…
    quisiera saber si me podrian ayudar estoy realizando un docto. en fpdf con php el chiste esq tengo q mandar a imprimir sobre un docto ya hecho solo algunos datos deben de ir ahi lo q no me sale y s eme hace complicarlo es la alineacion y el como puedo meter el texto puesto q es muy complicado para mi…
    aky dejo el ejemplo de lo q estoy haciendo y es q todo se me amontona y se me dificulta ay una manera de alinear y acomodar el texto???

    AddPage();
    $pdf->SetFont(‘Arial’,’B’,14);
    $pdf->Cell(40,10,’123′);
    $pdf->Cell(40,10,’1234′);
    $pdf->Cell(40,10,’Lunes’);
    $pdf->Cell(40,10,’Diciembre’);
    $pdf->Cell(40,10,’2009′);
    $pdf->Cell(40,10,’Tuxtepec’ , ‘Oaxaca’);
    $pdf->Cell(40,10,’cinco’);
    $pdf->Cell(40,10,’Diciembre’);
    $pdf->Cell(40,10,’2009′);
    $pdf->Cell(40,10,’12:oo’);
    $pdf->Cell(40,10,’12345′);
    $pdf->Cell(40,10,’LI. Victor Manuel Evaristo Salinas’);
    $pdf->Cell(40,10,’LI. Horacio Maldonado Hernandez’);
    $pdf->Cell(40,10,’LI. Pedro Tellez Gamboa’);
    $pdf->Cell(40,10,’X. MEMORIA DE RESIDENCIA PROFESIONAL’);
    $pdf->Cell(40,10,’Julanito de Tal’);
    $pdf->Cell(40,10,’Licenciado en Informatica’);
    $pdf->Cell(40,10,'»abcdefgh ijklmnop qrstuvwxyz abcdefgh ijklmnop qrstuvwxyz abcdefgh ijklmnop»‘);
    $pdf->Cell(40,10,’Abcdefghijklmnopqrstuvwxyz’);
    $pdf->Cell(40,10,’13:00′);
    $pdf->Cell(40,10,’LI. Victor Manuel Evaristo Salinas’);
    $pdf->Cell(40,10,’LI. Horacio Maldonado Hernandez’);
    $pdf->Cell(40,10,’LI. Pedro Tellez Gamboa’);
    $pdf->Cell(40,10,’cinco’);
    $pdf->Cell(40,10,’Diciembre’);
    $pdf->Cell(40,10,’2009′);
    $pdf->Cell(40,10,’LI. Horacio Maldonado Hernandez’);
    $pdf->Cell(40,10,’M.C. Miguel Angel Urrutia Salinas’);
    $pdf->Output();
    ?>
    gracias…

  144. Un saludo elsyta, desgraciadamente no hay ninguna opción que te permita alinear automáticamente la desventaja de esta clase es que todo es manual.

    Probando el código que mandas, el cual por cierto esta incompleto pero me imagino que wordpress lo edito, puedo ver que no haces salto de línea en ningún momento =S

    ¿Necesitas que todo esa información se encuentre en la misma línea?
    De ser así tendrás que usar un tamaño de letra más pequeño y aún así no creo que entre, tendrías que mostrar los datos en varias líneas.

    Recuerda que para el salto de página necesitas indicarlo en el método Cell.
    Cell(float w [, float h [, string txt [, mixed border [, int ln [, string align [, boolean fill [, mixed link]]]]]]])

    Ejemplo:
    $pdf->Cell(40,10,’Tuxtepec’ , ‘Oaxaca’, 0, 1);

    Donde 0 representa que el borde de la celda no se vea y el 1 la siguiente celda se imprime en otra línea llama implícitamente la instrucción Ln()

    Más información del método http://fpdf.org/es/doc/cell.htm

    Ahora si lo importante es mostrar la información en formato de tabla te recomiendo el siguiente script
    http://fpdf.org/es/tutorial/tuto5.htm

    Espero que lo anterior te sea de utilidad..

    1. muchas gracias…alberto…

      si, se me olvido mencionar q todo va en lineas diferentes… esq es un documento q ya esta lleno y solo van esos datos en los espacios en blanco… y quiero acomodar cada cada dato en su espacio correspondiente… loq pasa q cuando lo estoy haciendo pues se me encima todo o sale disperso 😦 en verdad q necesito ayuda…

      voy a intentar con lo q me mencionaste…gracias

  145. Hola como estas? estoy realizando mi proyecto de grado y necesito general facturas en pdf vi tu ejemplo y me intereso mucho, ya que soy nueva generando reportes en pdf. si me podrias ayudar enviandome ese ejemplo que me parecio super bien.

  146. Alberto, muchas gracias, quedo solucionado el problema con los acentos y eñes en fpdf gracias a utf8_decode.

    Es un poco extraño ya que solo pasaba en fpdf, pero ya quedo solucionado.

  147. Hola amigo, por favor si me pudieras enviar el ejemplo que propusiste, y si tuvieras alguna sugerencia para poder generar el pdf de una pagina especifica.

    Me explico mejor, me gustaria tener siempre un boton (Generar PDF) para poder ver la version del documento .html o .php de la pagina que este visitando en ese momento en PDF, por favor si pudieras ayudarme con eso te los agradeceria mucho.

    Saludos. Esperare tu respuesta en mi correo, nuevamente gracias

  148. hola, podrías enviarme el código del ejemplo de trabajando con fpdf porfavor… es que solo me falta saber como le hago para acomodar bien las celdas….

    Gracias

  149. Hola! Te hago una pregunta…si me podés ayudar…

    Necesito escribir en 2 columnas, yo comienzo a escribir en la 2ª col pero en la 2ª página y luego tengo que ir a la 1ª columna de la 1ª página…

    Cómo hago para que no me la sobreescriba???

    Te agradezco la ayuda, voy a escribir en el foro además!

    Lucía.

  150. hola lucia te recomiendo http://www.fpdf.org en esta pagina hay un tutorial buenisimo de la clase fpdf y te muestran el codigo fuente para hacer lo de las columnas y q no se sobrescriba la columna cuando pasas a la primera pagina.

    Paola la programadora

  151. Gracias Paola por contestar, pero lo que necesito es algo mas complejo. Ahora estoy viendo posibles soluciones gracias a la ayuda que me brindaron por aca. Ya le diré si lo solucioné!

  152. Hola Alberto agradecerte que compartas tu conocimiento y tu tiempo paraquienes lo necesitamos.Alberto estoy muy interesado en tu codigo del ejemplo porfa cuanto antes me lo envies me ayudara muchisimo te agradezco tu generosa ayuda.

  153. Hola Akberto mira tengo el siguiente codigo y me genera este error :

    FPDF error: Some data has already been output, can’t send PDF file

    AddPage();
    $pdf->SetFont(‘Arial’,’B’,14);
    $pdf->Cell(60,10,’Empresa Fictica S.L’,0,0,’C’);
    $pdf->Cell(40,10,’Nº Factura’,0,0,’C’);
    while ($dato = mysql_fetch_array($resultado)) {
    $numfactura=$dato[«nfactura»];
    $pdf->Cell(40,10,».$numfactura.»,0,1,’C’);
    }
    $pdf->Cell(60,10,’Cif 345934589J’,0,0,’C’);
    $pdf->Cell(40,10,’Cliente’,0,0,’C’);
    while ($dato1 = mysql_fetch_array($resultado3)) {
    $razonsocial=$dato1[«razonsocial»];
    $pdf->Cell(40,10,».$razonsocial.»,0,2,’C’);
    }
    $pdf->Output();
    ?>
    por tu ayuda mil gracias

  154. Hola.

    Haber si alguien me pudiese ayudar, tengo un problema con la impresora epson LX300- personalice mi tamaño de hoja y dicha impresora me bota con un margen de 2 cm aprox de mas. lo cual de descuadra totalmente ya que tengo que imprimir unas facturas que ya tienen margen por defecto.

    Si alguien puediera ayudarme.

    Gracias

  155. Haber si me pueden ayudar, tengo que hacer un reporte el cual tiene muchas columnas, en el orden: codigo, nombre del articulo, modelo, marca, precio, saldo.

    El problema es que el campo nombre es bien largo y necesariamente tengo que hacer saltos de linea, use el multicell para esta columna, pero el problema es que las siguientes columnas (modelo, marca) se han posicionado en la ultima fila que hizo el multicell, como podria hacer para que las siguientes columnas se posicionen siempre en la primera fila

    COLUMNA 1 COLUMNA 2 COLUMNA 3
    nombre de articu-
    lo bien grande que
    genera muchas filas siguiente_col otra_columna

  156. estoy intentando generar un PDF con el FPDF ya hice algunos ejemplo y me sale pero yo quiero hacer un pdf que me muestre los datos de un formulario donde hago mi cunsulta con php desde una base de datos de mysql perono se como pasale la varible del formulario al codigo de fpdf si tienes unos ejemplos q me puedan mandar a mi correo se lo agradeceria mucho

    de antemano muchas gracias

  157. Tengo un formato creado con clase «FPDF», con lo que estoy vatallanado es llenar ese formato con valores almacenados en mi base de datos, cuando realizo la consulta mando atravez del POST la variable que deseo cumpla con la sentencia para que se lleve acabo el doc. pero no me dejaaa, la variable la estoy mandando desde un fomulario.

  158. Muy buen pdf, estoy en eso, pero tengo algunos problemas con la justificacion de los textos, sabes como hacerlo??? de ya que estamos aqui me podrias mandar tu codigo para echarle un revisadita?, gracias saludos

  159. hola amigos, estoy trabajando con fpdf y con tablas y tengo problemass con multicell ya q logro imprimir la tabla con datos de mi bd en mi pdf, pero mi problema es con multicell, me funciona bien el multicell al recibir textos mas grandes q la celda pero mi problema es q todos los datos se me imprimen en la primera columna para abajo y no se pq no se me imprime cada dato en la columna q corresponde, no se pq se me imprimen todos los datos en la primera columna hacia abajo, en q estare fallando maigos??? porfavor ruego su ayuda amigos mi coce es:

    FPDF(‘P’,’mm’,’Letter’);
    }
    function Header()
    {
    $this->Image(‘../../imagenes/logo1.jpg’,15,10,20);
    $this->SetFont(‘Arial’,’B’,16);
    $this->Cell(80);
    $this->Cell(30,20,’Informe de Sectores’,0,0,’C’);
    $this->Ln(20);
    $this->SetFont(‘Arial’,’B’,10);
    $this->SetLineWidth(.4);
    $this->Cell(15,5,’Codigo’,1,0,’L’);
    $this->Cell(25,5,’Nombre’,1,1,’L’);
    //$this->Cell(18,5,’Nombre’,1,1,’L’);

    }
    function Footer()
    {
    $this->SetY(-15);
    $this->SetFont(‘Arial’,’I’,8);
    $this->Cell(0,0,’Copyright© 2009, r0xdrig0 Corporation. All Rights Reserved’.’ – Pagina 0′.$this->PageNo(),0,0,’C’);
    }
    }
    $pdf=new PDF();
    $pdf->Open();
    $pdf->AddPage();
    $pdf->SetLineWidth(.3);
    $pdf->SetFillColor(‘200’,200,0);
    $pdf->SetFont(‘Times’,»,’8′);
    $pdf->SetLineWidth(.1);
    $NUM=pg_num_rows($RES_SECTOR);
    $fill=0;
    $i=0;
    while($iMultiCell(15,5,$codigo,1,0,$fill, ‘L’, 0);
    $pdf->MultiCell(25,5,$nombre,1,1,$fill,’R’,1);

    $fill=!$fill;
    $i++;
    }

    $pdf->Output();
    ?>

    en q estare fallando amigos?? pq se me imprimen todos los datos en la primera columna hacia abajo y no me toma el formato para q cada fila este bajo su columna???? porfavor amigos ruego su ayuda…. y si alguien tiene la solucion q me la postee o me mande un mail a anathemo_1983@hotmail.com, en especial a ti tolito o alberto si es q me pueden echar una mano de antemano gracias …. bye

  160. Hola Albert, Buenas tardes, lo que pasa es que tengo que generar un reporte muy similar al que muesras en tu tuto, y lo que pasa es que estoy tardando demasiado por que estoy acomodando todos los textos y lineas por coordenadas, y queria ver si de favor me pudieses mandar el codigo de tu pdf, para ver como lo hiciste y tomarlo como ejemplo haber si me sale mas rapido, espero me contestes por que me urge, me estan presionando mucho con ese reporte, agradecido de antemano…
    bye

  161. WOW, definitivamente me dejas soprendido!!! Eres muy bueno se ve que si te llevaste tus buenas noches generando ese documento, estare muy agradecido si me lo mandas a mi mail para estudiarlo y aprender algo de ti. Muchas gracias!!!

    PD.- Mi mail es furiaroa@hotmail.com

  162. Hola, algo exactamente como tu pdf es lo q necesito hacer
    ya que tengo una bd que genera un archivo como un informe resumiendo los detalles de un equipo y quiero poder generar un pdf de este «pagina» para asi luego poder enviarlo por mail sin problemas de paginacion.

    me enviarias el codigo plis
    gracias 😉

  163. Hola, veo que ayudas a muchos compañeros con sus dudas con el FPDF , asi que aprovechando jeje, me gustaría ver contigo la posibilidad que me ayudes con una duda: Tengo una imágen insertada ya en mi pdf y de hecho genera todo bien, lo que quiero hacer es que esa imagen sea un link a otra pagina del mismo sitio, es decir, que al dar click en la imágen lo mande por decir a http://www.misitio.com/index.php.

    De antemano gracias por tu apoyo,
    Gracias!

    1. Hola , yo tengo el mismo problema, tengo un el pdf que genera perfectamente con varios link pero quiero que esos link abran en una nueva ventana, o alguien sabe como hacer esto?

  164. alguien sabe como hacer que un link escrito en el pdf, al hacer click abra en una nueva ventana ????? ayuda por favor , he buscado por todas parte pero no encuentro nada sobre eso.

  165. hola a todos, tengo un problemilla, lo que pasa es que el codigo de ejemplo que esta arriba, despues de la linea 266 me manda a otra hoja, tomando como parametros en Y el 277 y el texto me la pone en la segunda hojaa a la mitad de segunda hoja, que puedo hacer, esta mal configurada la libreria o al codigo le falta un parametro para que se imprima el resultado en toda lahoja… ayuda

  166. Aqui esta un ejemplo, espero les sea de ayuda.

    Slds.
    Link = $Link();
    }
    //Cabecera de página
    function Header()
    {
    //VARIABLES
    $this->registro = $_GET[‘id’];
    //MOSTRANDO Y TRAYENDO DATOS DE LA CABECERA
    $Sql = «SELECT numero,sucursal FROM tabla1 WHERE id = «.$this->registro;
    //echo $Sql;
    $Rs = mysql_query($Sql);
    $Row1 = mysql_fetch_array($Rs);

    $this->Ln(5);
    $this->Setfont(‘Arial’,»,’8′);
    $this->Cell(0,0,»Pagina : «.$this->PageNo().’/{nb}’,0,0,’R’);
    $this->Setfont(‘Arial’,’B’,’14’);
    $this->Ln(5);
    $this->Cell(3);
    $this->Cell(70,8,’HARDSHOPC SAC’,0,0,’L’);
    $this->Cell(14,8,»»,0,0,’C’);
    $this->Cell(100,8,»TRANSFERENCIA LOCAL: «.$Row1[‘numero’],0,0,’R’);/*DATA DE PHP- BASE DE DATOS*/
    $this->Ln(10);
    $this->Setfont(‘Arial’,»,’10’);
    $this->Cell(15,8,’Cliente : ‘,0,0,’R’);
    $this->Cell(30,8,$Row1[‘sucursal’],0,0,’L’);
    $this->Cell(40,8,’Hecho : ‘,0,0,’R’);
    $this->Cell(60,8,»IMPRESO POR»,0,0,’L’);
    #dibujando Parametros
    $this->Ln(7);
    $this->Setfont(‘Arial’,’B’,’11’);
    $this->Cell(3);
    $this->Cell(20,8,’Articulo’,1,0,’C’);
    $this->Ln(5);
    }

    function Footer()
    {
    //Posición: a 1,5 cm del final

    $this->SetY(-15);
    //Arial italic 8
    $this->SetFont(‘Arial’,’I’,8);
    //Número de página
    $this->Cell(0,10,’Pag. ‘.$this->PageNo().’/{nb}’,0,0,’C’);
    }
    }
    /*********DETALLE DE LA ORDEN DE PEDIDO – DATAS DE LA BASE DE DATOS – PHP*************/
    //MOSTRANDO Y TRAYENDO DATOS DE LA CABECERA
    /*********DATAS EJEMPLOS*************************/

    $pdf=new PDF(‘P’,’mm’,array(249,140));
    $pdf->AliasNbPages();
    $pdf->AddPage();
    $pdf->SetFont(‘Times’,»,12);
    /*
    * Contenido
    */
    $obj = new PDF();
    $obj->Header();
    $pdf->Setfont(‘Arial’,»,’9′);
    $pdf->SetXY(22,38);
    /*Sentencia SQL*/
    $Sql = «select articulo from articulos where cod_articulo = ‘».$registro.»‘»;
    $Rs = mysql_query($Sql);
    //echo $Sql;
    while($Row2 = mysql_fetch_array($Rs)){
    /*Datas*/
    $pdf->Ln(5);
    $pdf->Cell(3);
    $pdf->Cell(20,8,$Row2[‘articulo’],0,0,’C’);
    }
    /************LINEA**************/
    $pdf->Ln(5);
    $pdf->Cell(30);
    $pdf->Cell(150,2,’___________________________________________________________________________________________________________________’,0,0,’C’);
    /***********TOTAL**************/
    $pdf->Ln(5);
    $pdf->Setfont(‘Arial’,»,’9′);
    $pdf->Cell(110,8,»Total : «.$Total,0,0,’R’);/*Data obtenida por ase de datos*/
    /*CERRAR*/
    $pdf->Output();
    ?>

  167. Que tal Albert!!! hace unos cuantos meses solicite tu prestigiado código, supongo que por tus diversas actividades no me lo has podido mandar; motivo por el cual te lo solicito nuevamente. Disculpa las molestias y desde ya gracias de antemano!!!

  168. Hola. Usando FPDF me he encontrado con un problema raro con los acentos. Sucede que todos los datos traidos de una BD muestran bien sus acentos, si los tienen, pero he aqui que en un caso en especial sale un guion al lado de la vocal acentuada, o sea, una cosa asi «í-«, un ejemplo seria que en vez de Ingeniería, me muestra Ingenierí-a. En cambio en otras frases como Ciencias Biológicas lo muestra bien y sin problemas. Noté que ese guion solo aparece entre dos vocales y cuando la primera esta acentuada.
    Ya he probado con varias funciones y combinandolas, pero no arreglan nada o me empeoran todo. He usado utf8_encode(), utf8_decode(), iconv(), html_entity_decode(), header(), mysql_query(«SET CHARACTER SET utf8»), mysql_query(«SET NAMES utf8»), etc., pero nada.
    Por favor, si a alguien le paso algo parecido, le agradeceria que me de una mano, alguna solucion que no he encontrado por ningun sitio. Desde ya, gracias y saludos!

  169. Hola buen amigo, fijate que estoy usando ezpdf, pero no encuentro como sacar los datos de mysql. POR FA MANDAME TU CODIGO, AHORA PROBARE CON EL fpdf. POR SI TIENES ALGUN EJEMPLO CON BASES DE DATOS O QUE CONVIERTA UNA HTML A PDF SERIA SENSACIONAL.

    DE ANTEMANO ESTOY AGARDECIDO…

  170. hola que tal me gusto mucho tu blog y me gustaria que si me haces el favor de pasarme o prestarme ese codigo ya que me parecio muy bueno

    gracias

  171. Hola que tal amigo, estoy impresionado con tu trabajo, es excelente. yo me inicio apenas con el fpdf y veo cuanto potencial tiene. sobre todo por tu proyecto. Ojala me pudieras enviar el codigo fuente a mi correo.

    azulxp@gmail.com

    de antemano, gracias y suerte en tus proyectos.

  172. Hola que tal, la verdad me interesa el ejemplo me lo podrías mandar por favor intento hacer un formato con tablas pero mucho más sencillo que el tuyo, es por eso que tu ejemplo sería de gran ayuda para mí, mi email es favtux22@hotmail.com

    De antemano gracias.

    Saludos…

  173. hola, estoy si me pudieras enviar una copia del fuente de ese Pdf que esta buenisimo, te lo agradeceria un mundo, ya que estoy haciendo mi proyecto de grado y me falta realizar los reportes en php. gracias…

  174. Hola amigo me parece demasiado interesante el blog, me gustaria que me enviaras el codigo del ejemplo. tengo dias sufriendo con un formato que estoy trabajando de php a pdf.. espero que tu correo llegue pronto. y gracias por adelantado..

  175. Hola, me gustaria el codigo de ejemplo. Utilizas BD? tengo la conexion con mysql ya el proyecto esta practicamente listo, solo me faltan los reportes y estoy usando FPDF ya que use otra ezpdf pero me lo genera en una maquina con win vista y en XP no! no entiendo el porque pero no me puedo arriesgar. tambien queria preguntarte si sabes o tienes algo para que el usuario final genere las consultas a BD dinamicamente (escoja los campos que quiere ver y el select se genere solo por detras). Estoy haciendo mi proyecto final de pasantias me lo pidieron pero no tengo tiempo para culminar con ese requerimiento ya estoy que digo que no se puede :(.

    De antemano Gracias. Espero respuesta

  176. hola te felicito por tu trabajo de verdad quedo muy bien el pdf que generaste…! la verdad seria de gran ayuda para mi que pudieras mostrarme el codigo del ejemplo ya que necesito imprimir un reporte similar en mi proyecto de tesis..! saludos.!! espero que puedas ayudarme.. te lo agradeceria toda mi vida

  177. Excelente aportación, me encuentro en una situación igual y hay cosas que no me salen. Me interesaria saber como realizas la distribucion de cada cosa en los pdf, espero puedas enviarme tu codigo, te lo agradeceria infinitamente.

  178. esta muy bien echo ese reporte, yo = stoy trabajando FPDF y he tenido problema con el diseño, pero ya lo he logrado pero si me puedes pasar tu codigo para complementar mi diseño, estoy trabajndon con PHP, SQL SERVER 2005 Y APACHE

  179. Hola amiga esta muy interesante tu ejemplo haber si me pasa el codigo fuente gracias, tambien tengo una duda en un parraro tengo algunas frases en negrita y no se como sacarlo le pongo palabray sale igual haber si me das un ayuda es es dentro deun parrafo

  180. Muchísimas gracias… a mi me interesa ver el código deseo saber si puedes enviármelo. Te mando un fuerte abrazo y mis agradecimientos continuos.

  181. Hola, recien comienzo con este tema de mostrar resultados en pdf y me sorprendí con los resultados que obtienes creando un documento de diseño tan complicado. Por favor podrías enviarme el código. Desde ya muchas gracias.

  182. Hola, Realice un pdf con multicell pero tengo problemas con la última línea ya que la primera celda de la ultima linea es multicell me la imprime en la siguiente página y luego la segunda celda la imprime en el medio de la segunda página. anexo el código para ver que puede faltar…
    ConsultarListado($IdListado);

    $EmpresaAsociadas=$ClaseConexion1->ConsultarListadoEmpresa($IdListado); //print_r($EmpresaAsociadas);
    $ListarDetalle=$ClaseConexion1->ListarDetalleListado($IdListado);

    /*$Cantidad_total=$cantidad+$cantidad1+$cantidad2+$Cantidad3;*/
    class PDF extends FPDF{
    //Page header
    function Header(){
    //********************************************************************************************
    //Funcion Image ();
    //Esta función la utilizamos para añadir imágenes a nuestros archivos PDF.
    //Nos admite los formatos JPEG, PNG y GIF (para este formato necesitamos la extensión GD).
    //********************************************************************************************
    //Sintaxis: Image(string file [, float x [, float y [, float w [, float h [, string type [, mixed link]]]]]])
    // * file: nombre del archivo de la imagen.
    // * x: Abscisa de la esquina superior izquierda. Si no se especifica se utilizará la abscisa actual.
    // * y: Ordenada de la esquina superior izquierda. Si no se especifica se utilizará la ordenada actual.
    // * w: Ancho de la imagen en la página.
    // * h: Alto de la imagen en la página.
    // * type:Formato de la imagen.
    // * link: identificador devuelto por el método AddLink() o la url del enlace.
    //********************************************************************************************

    //Imagenes a Mostrar en el encabezado de la pagina

    //********************************************************************************************
    //Funcion SetFont ();
    //Es la función que nos permite establecer el formato de la fuente utilizada en el archivo pdf. Es obligatorio llamar a esta
    //función al inicio de la creación del archivo ya que sino el documento no sería valido.
    //********************************************************************************************
    //Sintaxis: SetFont(string familia[, string estilo [, float size]]);
    // * familia: familia de fuente que pueden ser las standars(Courier,Helvetica o Arial, Times, Symbol,ZapfDingbats) o añadir una mediante AddFont();
    // * estilo: estilo de la fuente que puede ser regular ” ”, negrita “B”, italica “I” y subindice “U”.
    // * size: tamaño de la fuente en puntos. Su valor por defecto es 12.
    //********************************************************************************************
    $this->SetFont(‘Arial’,’B’,12);

    //**********Salto de Linea *******************************
    $this->Ln(16);
    //$this->SetXY(30,5);

    //******Encabezado de la tabla
    $this->SetFillColor(209,209,209);
    $this->SetLineWidth(.3);
    $this->SetFont(‘Times’,’B’,10);
    $this->SetFont(‘Times’,»,10);
    }
    //Page footer
    function Footer(){
    //Position at 1.5 cm from bottom
    $this->SetY(-15);
    //Arial italic 8
    // $this->SetRightMargin(5);
    //Color del texto en gris
    $this->SetTextColor(128);
    $this->SetFillColor(255,255,255);
    $this->SetFont(‘Arial’,’I’,8);
    //Page number
    $this->Cell(0,5,’Av. Libertador, Centro Comercial Los Cedros, Planta Baja, La florida. Caracas – Dtto. Capital Master 0212 705.31.51′,0,1,’C’);
    $this->Cell(0,5,’www.indepabis.gob.ve. 0800-RECLAMA(0800-7325262)’,0,0,’C’);
    $this->Cell(0,5,utf8_decode(‘Página ‘).$this->PageNo().’/{nb}’,0,0,’R’);
    }
    }

    //Instanciation of inherited class
    $pdf=new PDF();
    //********************************************************************************************
    //Funcion FPDF ();
    //Vamos a empezar con la clase constructor FPDF() que nos permite crear el documento pdf y darle un formato.
    //Tenemos que tener en cuenta que los parámetros que le pasemos se usarán en todos los métodos. Su sintaxis es la siguiente:
    //********************************************************************************************
    //Sintaxis: FPDF([string orientación [, string unidad [, mixed formato]]);
    // * orientación es la forma de colocación de la página, es decir, debemos indicar si es normal o apaisada. El valor por defecto “P” es normal. El valor para apaisada es “L”
    // * unidad es la medida de usuario y sus posibles valores son: “pt” punto, “mm” milímetro, “cm” centímetro e “in” pulgada. El valor por defecto es el “mm”
    // * formato de la página. Puede tener los siguientes valores: A3, A4, A5, Letter y Legal. El valor por defecto es A4
    //********************************************************************************************

    $pdf-> FPDF(‘P’,’mm’,’Letter’);
    $pdf->SetAutoPageBreak(true, 15);

    //***** MArgenes
    $pdf->SetLeftMargin(9);
    $pdf->SetRightMargin(9);
    $pdf->SetTopMargin(5);

    $pdf->AliasNbPages();

    //********************************************************************************************
    //Funcion AddPage();
    //Esta función nos añade una página nueva al documento pdf. Como parámetros tan solo tiene la orientación y el formato,
    //el resto de características las coge por defecto del constructor.
    //********************************************************************************************
    //Sintaxis:AddPage([string orientacion[,mixed formato]]);
    //Los parámetros orientación y formato son iguales que en FPDF(). Si no le pasas parámetros cogerá automáticamente los del constructor.
    //********************************************************************************************

    $pdf->AddPage();

    //********************************************************************************************
    //Funcion Cell ();
    //Esta función nos imprime una celda donde vamos a imprimir nuestro texto. Tiene bordes opcionales y color de fondo.
    //En esta celda podemos colocar el texto alineado o centrado.
    //********************************************************************************************
    //Sintaxis: Cell(float w [, float h [, string texto [, mixed borde [, int ln [, string align [, boolean fill [, mixed link]]]]]]])
    // * w: ancho de la celda. Si ponemos 0 la celda se extiende hasta el margen derecho.
    // * H: alto de la celda.
    // * Texto: el texto que le vamos a añadir.
    // * Borde: nos dice si van a ser visibles o no. si es 0 no serán visibles, si es 1 se verán los bordes.
    // * Ln: nos dice donde se empezara a escribir después de llamar a esta función. Siendo 0 a la derecha, 1 al comienzo de la siguiente línea, 2 debajo.
    // * Align: para alinear el texto. “L” alineado a la izquierda, “C” centrado y “R” alineado a la derecha.
    // * Fill: nos dice si el fondo de la celda va a ir con color o no. los valores son True o False
    //********************************************************************************************
    //***Datos de la Tabla (LLenado de la tabla)

    $pdf->Image($Ruta.’Servidor/Imagenes/SUR/CintilloGobierno.jpg’,9,2,200,8);
    $pdf->Image($Ruta.’Servidor/Imagenes/SUR/BarraSurPdf.jpg’,9,10,200,8);

    $pdf->SetWidths(array(20));

    if($ConsultarListado!=0){
    $pdf->SetFont(‘Arial’,»,10);
    $Fecha= date(«d».»-«.»m».»-«.»Y»);
    $pdf->Cell(0,5,utf8_decode(‘Fecha de la Emisión: ‘).$Fecha,0,1,’R’);
    $pdf->SetFont(‘Arial’,’B’,10);
    $pdf-> Cell(0,5,utf8_decode(‘Número de Control: ‘). $ConsultarListado[‘NumeroIdentificacionListadoPrecio’],0,1,’R’);

    }

    $pdf->Ln(3);
    $pdf->SetFont(‘Arial’,’B’,11);
    $pdf->Cell(0,6,’NOTIFICACIONES DE LISTADO DE PRECIO DE PRODUCTOS Y SERVICIOS’,0,1,’C’);

    $pdf->Ln(1);

    $pdf->SetFont(‘Arial’,»,12);

    //Obtiene las empresas asociadas a la empresa

    //$pdf->SetWidths(array(100));
    $pdf->SetLeftMargin(25);
    if($EmpresaAsociadas!=0){
    $pdf->Cell(0,6,utf8_decode(‘Datos del Establecimiento’),0,1,’C’);
    $pdf->Ln(1);
    $pdf->SetFillColor(209,209,209);
    $pdf->SetLineWidth(.3);
    $pdf->Cell(50,5,’Num. Identificacion’,1,0,’C’,true);
    $pdf->Cell(25,5,’Rif’,1,0,’C’,true);
    $pdf->Cell(110,5,’Nombre’,1,1,’C’,true);
    $pdf->SetFont(‘Arial’,»,10);
    foreach($EmpresaAsociadas as $Lista):

    if($Lista[«Persona»]==’N’){ /*Naturales*/
    $ListarNatural=$ClaseConexion1->ConsultarEmpresasNaturalAsociadasListado($Lista[«IdEmpresa»],$Lista[«IdListadoPrecio»]) ;
    if($ListarNatural!=0){
    $pdf->Cell(50,5,utf8_decode($ListarNatural[‘Rif’]),1,0,’C’,false);
    $pdf->Cell(25,5,utf8_decode($ListarNatural[‘Rif’]),1,0,’C’,false);
    $pdf->Cell(110,5,utf8_decode($ListarNatural[‘Apellido’] . » «. $ListarNatural[‘Nombre’]),1,1,»,false);
    }

    }
    if($Lista[«Persona»]==’J’){ /*Juridicas*/
    $ListarJuridico=$ClaseConexion1->ConsultarEmpresasJuridicaAsociadasListado($Lista[«IdEmpresa»],$Lista[«IdListadoPrecio»]);
    if($ListarJuridico!=0){
    $pdf->SetWidths(array(50,120));
    $pdf->Cell(50,5,utf8_decode($ListarJuridico[‘NumeroIdentificacion’]),1,0,’C’,false);
    $pdf->Cell(25,5,utf8_decode($ListarJuridico[‘Rif’]),1,0,’C’,false);
    $pdf->Cell(110,5,utf8_decode($ListarJuridico[‘RazonSocial’]),1,1,»,false);
    }
    }
    if($Lista[«Persona»]==’S’){ /*Juridicas*/
    $ListarSucursal=$ClaseConexion1->ConsultarEmpresasSucursalAsociadasListado($Lista[«IdEmpresa»],$Lista[«IdListadoPrecio»]);

    if($ListarSucursal!=0){
    $pdf->SetWidths(array(50,120));
    $pdf->Cell(50,5,utf8_decode($ListarSucursal[‘NumeroIdentificacion’]),1,0,’C’,false);
    $pdf->Cell(25,5,’Sucursal’,1,0,’C’,false);
    $pdf->Cell(110,5,utf8_decode($ListarSucursal[‘Nombre’]),1,1,»,false);
    }
    }
    endforeach;

    }

    $pdf->SetLeftMargin(9);

    $pdf->Ln(3);

    $pdf->SetFont(‘Arial’,’B’,10);
    $pdf->Cell(0,6,’LISTADO DE PRECIOS’,0,1,’C’);

    $pdf->Ln(1);
    $pdf->SetFillColor(209,209,209);
    $pdf->SetLineWidth(.3);
    $pdf->Cell(100,5,utf8_decode(‘Descripción’),1,0,’C’,true);
    $pdf->Cell(25,5,’Monto sin Iva’,1,0,’C’,true);
    $pdf->Cell(25,5,’Monto Iva’,1,0,’C’,true);
    $pdf->Cell(25,5,’Monto 10%’,1,0,’C’,true);
    $pdf->Cell(25,5,’Monto Total’,1,1,’C’,true);

    $pdf->SetFont(‘Arial’,»,10);
    if($ListarDetalle!=0){
    foreach($ListarDetalle as $Lista):
    $i++;
    $y1 = $pdf->GetY();
    $x1 = $pdf->GetX();
    //if ($y1=263){$y1=26}
    $pdf->MultiCell(100,5,$i. «/ y1: «. $y1 .’/’.utf8_decode($Lista[‘Descripcion’]),1,’L’,0,false);
    $y2 = $pdf->GetY();
    $alto_de_fila = $y2 – $y1 ;
    $posicionX = $x1 + 100;

    $pdf->SetXY($posicionX,$y1);
    $pdf->Cell(25,$alto_de_fila, $y1 .’/’. $Lista[‘MontoSinIva’]. » Bs.»,1,0,’R’,false);
    $pdf->Cell(25,$alto_de_fila, $Lista[‘MontoIva’] . » Bs.»,1,0,’R’,false);
    $pdf->Cell(25,$alto_de_fila, $Lista[‘Monto10%’] . » Bs.»,1,0,’R’,false);
    $pdf->Cell(25,$alto_de_fila, $Lista[‘MontoTotalIva10%’].» Bs.»,1,1,’R’,false);
    endforeach;
    }

    $pdf->Output(‘ReporteListadoPrecio.pdf’,’I’);
    ?>

  183. Hola, te felicito por tu trabajo con la clase fpdf, tengo un problema al generar reportes con tablas, varios codigos lo hacen pero no puedo generar el titulo de las tablas y los ejemplos que consigo en la web tienenmuchos adornos y existe uno que esta imcompleto, aqui te adjunto el que se ejecuta pero no imprime los titulos de los campos de la tabla:

    Image(‘Bolivar.jpg’,10,8,33);
    // Arial bold 15
    $this->SetFont(‘Arial’,’B’,15);
    // Movernos a la derecha
    $this->Cell(30);
    // Título
    $this->Cell(60,10,’Listado Electores por Centro de Votacion’,0,0,’C’);
    // Salto de línea
    $this->Ln(20);
    }
    //Pie de página
    function Footer()
    {
    $this->SetY(-10);
    $this->SetFont(‘Arial’,’I’,8);
    $this->Cell(0,10,’Page ‘.$this->PageNo().’/{nb}’,0,0,’C’);
    }
    }
    $head = array(«Cedula»,»Apellidos y Nombres»,»Centro Votacion»,»Mesa»,»Jefe Patrulla»); // cabecera
    //Creación del objeto de la clase heredada
    $pdf=new PDF();
    $pdf->AliasNbPages();
    $pdf->AddPage();
    $pdf->SetFont(‘Times’,»,8);

    //Aquí escribimos lo que deseamos mostrar
    mysql_connect(«localhost»,»root»,»»);
    mysql_select_db(«electores_sucre»);
    $consulta = mysql_query(«SELECT * FROM rep_sucre WHERE centro_nuevo=$centro_votacion ORDER BY ape_nom»);
    //$consulta = mysql_query(«SELECT cedula,ape_nom,centro_nuevo,numero_mesa,jefe_patrulla FROM patrullas»);
    $ixx=1;
    while($resultado = mysql_fetch_array($consulta)){
    //cell(ancho, altura, texto, borde, línea, alineación, relleno, enlace) pag329
    //$pdf->Cell(0,6,’Clave: ‘.$fila[‘clave’],0,1);
    $pdf->Cell(8,5,$ixx,1,0,’C’);
    $pdf->Cell(15,5,$resultado[‘cedula’],1,0,’C’);
    $pdf->Cell(70,5,$resultado[‘ape_nom’],1,0,’L’);
    $pdf->Cell(15,5,$resultado[‘centro_nuevo’],1,0,’C’);
    $pdf->Cell(8,5,$resultado[‘numero_mesa’],1,0,’C’);
    $pdf->Cell(15,5,$resultado[‘jefe_patrulla’],1,0,’C’);
    $pdf->Cell(8,5,$resultado[‘status_patrulla’],1,0,’C’);
    $pdf->Ln();
    $ixx++;

    }
    $pdf->Output();

    ?>
    la variable post la recojo de un formulario y todo bien solo necesito imprimir el titulo de los campos de la tabla.
    gracias.

  184. Hola ademas tengo otro reporte que me dice que tengo error en una linea de la sentencia for cuando dibujo el tamaño de las celdas:

    require(‘fpdf.php’);

    class PDF extends FPDF{
    function tabla($header,$data)
    {
    //Colores, ancho de línea y fuente en negrita de CABECERA
    $this->SetFillColor(62,102,60); // fondo de celda
    $this->SetTextColor(255); // color del texto
    $this->SetDrawColor(0,0,0); // color de linea
    $this->SetLineWidth(.3); // ancho de linea
    $this->SetFont(‘Arial’,», 7);
    $w=array(20,100,15,10,15,15,15); // en este arreglo definiremos el ancho de cada columna
    for($i=0;$iCell($w[$i],4,$header[$i],1,0,’C’,1));
    //por cada encabezado existente, crea una celda
    $this->Ln();

    //Colores, ancho de línea y fuente en negrita de CONTENIDO
    $this->SetFillColor(244,244,244); //
    $this->SetTextColor(0);
    $this->SetFont(»);
    //Datos
    $fill=false; // variable para alternar relleno
    foreach($data as $row)
    {
    $columna = explode(«;»,$row); //separar los datos en posiciones de arreglo
    $this->Cell($w[0],6,$columna[0],’LR’,0,’L’,$fill); //celda(ancho,alto,salto de linea,border,alineacion,relleno)
    $this->Cell($w[1],6,$columna[1],’LR’,0,’L’,$fill);
    $this->Cell($w[2],6,$columna[2],’LR’,0,’L’,$fill);
    $this->Cell($w[3],6,$columna[3],’LR’,0,’L’,$fill);
    $this->Cell($w[4],6,$columna[4],’LR’,0,’L’,$fill);
    $this->Cell($w[5],6,$columna[5],’LR’,0,’L’,$fill);
    $this->Cell($w[6],6,$columna[6],’LR’,0,’L’,$fill);
    $this->Ln();
    $fill=!$fill; //se alterna el valor del boolean $fill para cambiar relleno
    }
    $this->Cell(array_sum($w),0,»,’T’);
    }
    function tabla1($header1,$data1)
    {
    //Colores, ancho de línea y fuente en negrita de CABECERA
    $this->SetFillColor(62,102,60); // fondo de celda
    $this->SetTextColor(255); // color del texto
    $this->SetDrawColor(0,0,0); // color de linea
    $this->SetLineWidth(.3); // ancho de linea
    $this->SetFont(‘Arial’,», 6); // negrita
    $w=array(70); // en este arreglo definiremos el ancho de cada columna
    for($i=0;$iCell($w[$i],4,$header1[$i],1,0,’C’,1); //por cada encabezado existente, crea una celda
    $this->Ln();
    //Colores, ancho de línea y fuente en negrita de CONTENIDO
    $this->SetFillColor(244,244,244); //
    $this->SetTextColor(0);
    $this->SetFont(»);
    //Datos
    $fill=false; // variable para alternar relleno
    foreach($data1 as $row)
    {
    $columna = explode(«;»,$row); //separar los datos en posiciones de arreglo

    // validación a mano para que respete el limite de la celda

    if ($columna[0]>$w[0]){
    $this->Cell($w[0],20,$columna[0],’LR’,1,’L’,$fill); //celda(ancho,alto,salto de linea,border,alineacion,relleno)
    }
    else{
    $this->Cell($w[0],5,substr($columna[0],0, 45),’LR’,1,’L’,$fill);
    $this->Cell($w[0],5,substr($columna[0],45,53),’LR’,1,’L’,$fill);
    $this->Cell($w[0],5,substr($columna[0],99,150),’LR’,1,’L’,$fill);
    $this->Ln(0);
    }
    $fill=!$fill; //se alterna el valor del boolean $fill para cambiar relleno
    }
    $this->Cell(array_sum($w),0,»,’T’);
    }
    function Footer()
    {
    //Pie de página
    $this->SetY(-15);
    $this->SetFont(‘Arial’,’I’,10);
    $this->SetTextColor(128);
    $this->Cell(0,10,’Pagina ‘.$this->PageNo().’ de {nb}’,0,0,’C’); // el parametro {nb} es generado por una funcion llamada AliasNbPages
    }
    }
    //Me conecto a la base de datos
    $conex = mysql_connect(«localhost», «root», «»);
    mysql_select_db(«ejemplo», $conex);
    $pdf = new PDF();
    $pdf->AliasNbPages(); //funcion que calcula el numero de paginas
    $sql1 = «SELECT informacion FROM empresa»;
    $modificar11 = mysql_query($sql1, $conex) or die(mysql_error());
    $head1 = array(«VENEZOLANA DE RIEGO, C.A»); // cabecera
    $i=0;
    while ($fila=mysql_fetch_array($modificar11)){ //llenar variable dat con los campos de una fila unidos por ;
    $dat1[$i]=$fila[0]; //concatenar para luego ser separado por explode()
    $i++;
    }
    $sql = «SELECT cedula,apenom,sexo,fecha_nac,dirección,teléfono,email FROM clientes'»;
    $modificar1 = mysql_query($sql, $conex) or die(mysql_error());
    $head = array(«Cedula»,»Apellidos y Nombres»,»Sexo»,»Fecha Nac»,»Direccion»,»Telefono»,»Email»); // cabecera
    $i=0;
    while ($fila=mysql_fetch_array($modificar1)){ //llenar variable dat con los campos de una fila unidos por ;
    $dat[$i]=$fila[0].»;».($fila[1]).»;».$fila[2].»;».$fila[3].»;».$fila[4].»;».$fila[5].»;».$fila[6]; //concatenar para luego ser separado por explode()
    $i++;
    }
    $pdf->AddPage(); //crear documento
    $pdf->Image(‘images/logo.jpg’,10,8,30,30); //añadir imagen
    $pdf->Cell(50);
    $pdf->SetFont(‘Arial’,»,12);
    $pdf->Cell(120,15,»PRUEBA EDUARDO GAMARRA»,0,0,’C’);
    $pdf->Ln(35);
    $pdf->SetFont(‘Arial’,»,12);
    $pdf->Ln(10);
    $pdf->tabla1($head1,$dat1);
    $pdf->Ln(30);
    $pdf->tabla($head,$dat);
    $pdf->Output(); //el resto es historia

    este es ideal porque trabaja con dos tablas y si me genera el pdf estoy resuelto.
    por favor………., te agradezco cualquier ayuda

  185. buenos dias soy nuevo en esto, y me interesa mucho lo mas dificil para mi es no saber el proceso para que funcione con una base de datos, como se hace se sube el archivo fpd.php + el pdf.htm + la base de datos o como funciona alguien me lo puede explicar?

Replica a Elisa Cancelar la respuesta