FPDF: librería PHP para crear PDFs
Debido a la decepción que me estoy llevando con el Zend Framework, aunque aún tengo esperanzas en que vaya mejorando, he tenido que buscar otras librerías PHP para crear PDF. Una que he encontrado que me está gustando bastante (por ahora) es FPDF, una librería que exporta a PDF sin necesidad de PDFLib (la cual es de pago). Lo bueno que tiene tambien es que es gratuita, se puede usar libremente y modificar según nuestras necesidades.
Entre las funcionalidades que nos ofrece esta librería nos encontramos:
- Elección de la unidad de medida, formato de página y márgenes
- Gestión de cabeceras y pies de página
- Salto de página automático
- Salto de línea y justificación del texto automáticos
- Admisión de imágenes (JPEG y PNG)
- Colores
- Enlaces
- Admisión de fuentes TrueType, Type1 y codificación
- Compresión de página
- Y algo muy importante para mí, que es lo que más me ha decepcionado de las librerías de Zend, es la posibilidad de usar otro idiomas y caracteres especiales.
La instalación es sencilla, lo copias en el directorio donde guardes las librerías e incluyes la ruta en el include_path del php.ini.
Relacionados
Feedback (35) » Formulario
1. Mariona ~ Viernes, 22 Dic 2006 | 10:01H:
Hola, tb estoy trabajando con fpdf, pero tengo una duda, una vez colgada mi base de datos y mi aplicacion web en el servidor, el fpdf seguira funcionando?
Es decir, ahora yo lo hago funcionar localmente, remotamente tb funcionaría, no? Pero para ello la persona tiene que tener algun programa en concreto?
Si me puedes contestar me serías de gran ayuda.
Gracias
2. Luis ~ Viernes, 22 Dic 2006 | 11:54H:
Hola Mariona.
Lo que tendrás que hacer es instalar en el servidor la librería FPDF. Aunque en el post digo que se tiene que modificar el php.ini, creo que también se puede usar una ruta dentro del web root y luego hacer referencia a la url correcta en el include o require.
Saludos
3. CESAR ~ Martes, 20 Feb 2007 | 18:10H:
Hola si tienes unos manuales de ayax o alguna direccion donde halla algo claro te lo agradeceria mucho porque he buscado y no encuentro nada claro
4. CESAR ~ Martes, 20 Feb 2007 | 18:11H:
Hola si tienes unos manuales de ayax o alguna direccion donde halla algo claro te lo agradeceria mucho porque he buscado y no encuentro nada claro
6. Dagoberto ~ Miércoles, 16 May 2007 | 01:29H:
Mi problema es el siguiente, he desarrollado una aplicación Web que funciona sin ningún problema tanto en MOZILLA FIREFOX como en INTERNET EXPLORE, pero cuando genero un archivo PDF en MOZILLA lo muestra sin ningún problema, pero en cambio en IE, me solicita grabar el archivo primeramente...
Agradecido de ante mano…
8. gabriel ~ Martes, 18 Sep 2007 | 02:47H:
Hola yo tengo una duda, ya puse la libreria y todo jale perfecto solo tengo un problema no hacepta caracteres espaciales en esta caso el asento no aparese si me pudes ayudar por favor gracias.
9. Miguel ~ Viernes, 05 Oct 2007 | 19:25H:
hola como estan.... disculpen pero estoy creando un documento con fpdf y me gustaria crear un link dentro del documento hacia una direccion web. lo que consigo me dice q los link q puedo hacer son solo dentro del documento. pero me interesa q sea hacia fuera del documento el link.
alguien me puede ayudar porfa.....
s.o.s...............................................................................................
11. LALO ~ Jueves, 11 Oct 2007 | 19:10H:
hola miguel checate este codigo para hacer links a la misma docto y a una web.
?php
require('fpdf.php');
class PDF extends FPDF
{
var $B;
var $I;
var $U;
var $HREF;
function PDF($orientation='P',$unit='mm',$format='A4')
{
//Llama al constructor de la clase padre
$this->FPDF($orientation,$unit,$format);
//Iniciación de variables
$this->B=0;
$this->I=0;
$this->U=0;
$this->HREF='';
}
function WriteHTML($html)
{
//Intérprete de HTML
$html=str_replace("\n",' ',$html);
$a=preg_split('//U',$html,-1,PREG_SPLIT_DELIM_CAPTURE);
foreach($a as $i=>$e)
{
if($i%2==0)
{
//Text
if($this->HREF)
$this->PutLink($this->HREF,$e);
else
$this->Write(5,$e);
}
else
{
//Etiqueta
if($e{0}=='/')
$this->CloseTag(strtoupper(substr($e,1)));
else
{
//Extraer atributos
$a2=explode(' ',$e);
$tag=strtoupper(array_shift($a2));
$attr=array();
foreach($a2 as $v)
if(ereg('^([^=]*)=["\']?([^"\']*)["\']?$',$v,$a3))
$attr[strtoupper($a3[1])]=$a3[2];
$this->OpenTag($tag,$attr);
}
}
}
}
function OpenTag($tag,$attr)
{
//Etiqueta de apertura
if($tag=='B' or $tag=='I' or $tag=='U')
$this->SetStyle($tag,true);
if($tag=='A')
$this->HREF=$attr['HREF'];
if($tag=='BR')
$this->Ln(5);
}
function CloseTag($tag)
{
//Etiqueta de cierre
if($tag=='B' or $tag=='I' or $tag=='U')
$this->SetStyle($tag,false);
if($tag=='A')
$this->HREF='';
}
function SetStyle($tag,$enable)
{
//Modificar estilo y escoger la fuente correspondiente
$this->$tag+=($enable ? 1 : -1);
$style='';
foreach(array('B','I','U') as $s)
if($this->$s>0)
$style.=$s;
$this->SetFont('',$style);
}
function PutLink($URL,$txt)
{
//Escribir un hiper-enlace
$this->SetTextColor(0,0,255);
$this->SetStyle('U',true);
$this->Write(5,$txt,$URL);
$this->SetStyle('U',false);
$this->SetTextColor(0);
}
}
$html='Ahora puede imprimir fácilmente texto mezclando
diferentes estilos: negrita, itálica, subrayado, o ¡
todos a la vez!
También puede incluir enlaces en el texto, como www.fpdf.org,
o en una imagen: pulse en el logotipo.';
$pdf=new PDF();
//Primera página
$pdf->AddPage();
$pdf->SetFont('Arial','',20);
$pdf->Write(5,'Para saber qué hay de nuevo en este tutorial, pulse ');
$pdf->SetFont('','U');
$link=$pdf->AddLink();
$pdf->Write(5,'aquí',$link);
$pdf->SetFont('');
//Segunda página
$pdf->AddPage();
$pdf->SetLink($link);
$pdf->Image('logo.png',10,10,30,0,'','http://www.fpdf.org');
$pdf->SetLeftMargin(45);
$pdf->SetFontSize(14);
$pdf->WriteHTML($html);
$pdf->Output();
?
12. Gerardo ~ Martes, 16 Oct 2007 | 18:29H:
Hola necesito ayuda quiero hacer un formato en pdf de un cardex pero no se como jalar los datos desde mysql y colocarlos en las celdas para que me muestre los alumnos y las calificaciones.
De antemano se los agradeceria mucho si me ayudan.
13. CARLOS ~ Jueves, 18 Oct 2007 | 15:27H:
buenos dias...necesito ayuda con la configuracion para que el fpdf funcione en mozilla, ya que llevo mucho tiempo trabajando con el fpdf en internet explorer y nunca me ha fallado y ahora que lo necesito usar en mozilla no me genera los pdf, solo me abre una ventana con texto empezando por "%pdf-1.3 3 0 obj endobj 4 0 obj " y al final "%%eof"..
en fin no se si sera configuracion de php.ini o lo que sea...en todo caso auxilio!!
muchas gracias por su colaboracion
14. Oriana ~ Miércoles, 24 Oct 2007 | 22:06H:
Hola, estoy haciendo una aplicacion con flex y php, y cuando llamo al codigo php que crea el pdf (usando fpdf) me da un error y no hace nada... alquien sabrá porque??
*Ya fpdf me habia funcionado perfectamente en una pagina php comun.
15. Yolima ~ Viernes, 02 Nov 2007 | 21:25H:
Buen Día, tengo un problema cuando genero el archivo PDF lo mando a imprimir automaticamente y me genera un Error al Abrir el Archivo. he probado con varias versiones y a veces funciona otras no...
16. Ceod ~ Miércoles, 07 Nov 2007 | 17:24H:
Hola, estoy utilizando la libreria fpdf.php, al querer desplegar el pdf en el navegador, muestra una serie de caracteres que inician asi: %PDF-1.3 3 0 obj endobj 4 0 obj ...
Alguien sabe a que se debe y que puedo hacer? De antemano gracias.
17. Guillermo ~ Jueves, 15 Nov 2007 | 16:58H:
Hola, soy nuevo con esto y a decir verdad no entendí bien esta parte:
"...La instalación es sencilla, lo copias en el directorio donde guardes las librerías e incluyes la ruta en el include_path del php.ini."
en qué parte de mi php.ini lo agrego?
y en qué directorio debo copiar las librerías?
saludos.
18. Miguel ~ Martes, 12 Feb 2008 | 02:21H:
Hola, estoy trabajando con el FPDF y mando mis parametros correctamente pero al momento de acomodarlos dentro de mi documento pdf utilizando la sentencia Cell no logro acomodar los textos de la manera que yo lo deseo... Gracias
19. Eloi ~ Martes, 19 Feb 2008 | 09:51H:
Utilizo fpdf, tengo una formulario, por decirlo de alguna manera, que se rellena con datos de mysql. Necesitaría poder poner una imagen dentro de un Multicell, en este caso en una firma, como puedo hacerlo. Gracias por adelantado
20. Primo ~ Miércoles, 27 Feb 2008 | 21:21H:
tengo problmas con la generacion de fuentes.
Si tienes algo de informacion seria de mucha ayuda
21. merlinalove ~ Jueves, 27 Mar 2008 | 20:36H:
Hola tengo un problema, genero dinamicamente un pdf que obtiene datos de una base de datos MySQL, cuando muestro la informacion en Mozilla lo crea sin problemas pero al abrirlo con IE me dice que no puede encontra la pagina; alguien tiene idea de que puede ser?? Gracias de antemano!!
22. Miguel Montesinos ~ Jueves, 01 May 2008 | 21:06H:
Saludos Amigos:
Estoy usando FPDF y me parece bastante competente ya que reproduce en un 97% todo el contenido de nuestras paginas HTML. Sin embargo, hemos encontrado problemas cuando se juntan 2 tablas (es decir, dos tags ) ya sea una dentro de otra o una seguida de otra. Si alguien ha encontrado el mismo problema y ha resuelto el código le agradeceria infinitamente si lo podria compartir.
Muy agradecido por su ayuda de antemano.
23. Jose ~ Martes, 13 May 2008 | 20:18H:
Alguien conoce alguna libreria que convierta HTML a PDF, estoy usando la Dompdf pero no funciona bien me tira el siguiente error, aclaro que el html que le paso de argumento esta bien formado:
Warning: DOMNode::appendChild() expects parameter 1 to be DOMNode, null given in D:\Codigo\Pepetravel\Branches\PrecoreCupos\includes\dompdf-0.5.1\include\frame.cls.php on line 440
Fatal error: Call to undefined method Inline_Frame_Decorator::normalise() in D:\Codigo\Pepetravel\Branches\PrecoreCupos\includes\dompdf-0.5.1\include\table_frame_decorator.cls.php on line 321
24. Rafa ~ Miércoles, 21 May 2008 | 15:41H:
Hola. Tengo un problema soy nuevo en esto y me gustaria saber donde tengo que guardar la librerias. Gracias.
25. Lucia ~ Sábado, 31 May 2008 | 19:02H:
Hola,
Me gustaria saber como crear una plantilla predefinida en pdf, y como llamarla para insertarle datos desde un formulario con php. Si fuera tan amable de enviarme un ejemplo se lo agradeceria mucho. Ya se como crear un archivo pdf, al instante y le envio los datos, lo que quiero es crear una plantilla predefinida, q solo la llame para pasarle algunos parametros desde un formulario.
Me urge saber,de antemano muchas gracias.
Espero su respuesta.
26. Mato ~ Martes, 03 Jun 2008 | 18:49H:
Hola estoy desarrollando una aplicacion web para emitir factura, mi consulta es si en ves de crear codigo cada vez para dibujar la factura, no podria tener un pdf pre_cargado y luego completarlo con los datos de items de factura solamente.
hay una forma de lograr eso con esta libreria, o tengo que dibujar la factura cada vez, gracias.
27. karisa ~ Miércoles, 04 Jun 2008 | 15:41H:
hola buenas tardes, mi problema es el suguiente:
Tengo una aplicación web en red, y creo PDF's sin ningun problema, pero ahora conecto un portatil a esa aplicacion mediante un red virtual y me deja funcionar perfectamente con la aplicacion pero a la hora de crear un PDF me da el siguiente error:
ABCpdf3.Doc.1 error 80004005
Unable to render HTML. Unable to load page.
/aplic/documentos.asp, line 280
Alguien sabe porque debe ser y que tengo que hacer para que me genere el PDF?????
Muchas gracias a quien me pueda ayudar.
28. Coca ~ Viernes, 20 Jun 2008 | 23:18H:
Como puedo crear links hacia paginas internas del pdf sin utilizar AddLink() y SetLink(). lo que ando buscando es algo que me diga ejemplo gotopage(5), y que si le doy click al texto me vaya a la pagina 5 del documento, esto porque ya tengo PDF creados pero lo que quiero añadir es una pagina "Indice" donde aparesca el listado de los articulos que tiene mi PDF y por lo mismo que ya estan generados, pero si conozco las paginas a donde apuntan los articulos por medio de una Tabla de Mysql.
Por lo que si creo la pagina indice y a cada articulo le colocara un link que me dijera gotopage(#) seria feliz.... alguien sabe si esto es posible??? Ayuda Urgente porfavor.....
29. chauran ~ Jueves, 26 Jun 2008 | 22:29H:
hola que tal amigos, necesito una ayuda de su partes, estoy enviando unas variables de una pagina al script pdf par imprimirlo, y me dice que hay un error no acepta la variable que envio por ejemplo $nombre, como hago para que acepte esa variable, ayuda....
30. Luis Enrique Guerra ~ Viernes, 27 Jun 2008 | 02:54H:
HOla como stan tengo un problema copmo podria mantener la cabecera de una tabla en cuadno hago un lista de materiales solo quiero q seigua la cabecera en la siguiente hoja si pueden ayudarme en ese problema estarioa agradecido
31. Erika ~ Miércoles, 16 Jul 2008 | 03:21H:
Hola a todos!!
Hace poco empecè a implementar esta libreria FPDF, pero tengo un problemita, resulta que hago un query al BD y me crea el PDF. La primera hoja la muestra bien, pero cuando crea la segunda hoja se me desconfiguran todos los datos y me crea una hoja por cada informaciòn que es cargada en el query. Por ejemplo, el query carga la informacion de una tabla que tiene 10 campos, los 5 primeros están en la primera hoja, en el momento de crear la siguente página, crea un hoja por carga campo, es decir, crea 5 hojas más en el PDF.
Si me pueden ayudar con esto estaré muy agradecida.
32. arturo_chavarro ~ Domingo, 03 Ago 2008 | 20:03H:
Erika: en primer instancia creo k tienes una instrucción addpage en el header por eso se te multiplica la info. se ria mas pracico se pones el codigo k estas ejecutando....
si alguien me comenta como montar gif en fpdf le agradesco :)
33. arturo_chavarro ~ Domingo, 03 Ago 2008 | 20:07H:
Luis Enrique Guerra:
en este ejemplo te muestran como poner una cabecera y un pie de pagina fijo pon lo que quieras pero recuerda que cuando lo incluyas el resto del for se afectara esdecir si en la funcion header poes un setmargin(50,50,50,50) "en mm" las paginas cdonde aparezcan este header estarán afectadas directamente cuando crees el pdf ejemplo extraido de la web oficial de fpdf w w w .fpdf. o r g
34. arturo_chavarro ~ Domingo, 03 Ago 2008 | 20:15H:
chauran ~ Jueves, 26 Jun 2008 | 22:29H:
hola que tal amigos, necesito una ayuda de su partes, estoy enviando unas variables de una pagina al script pdf par imprimirlo, y me dice que hay un error no acepta la variable que envio por ejemplo $nombre, como hago para que acepte esa variable, ayuda....
Bueno recuerda que estamos trabajando en php, y si anexas el codigo sera mas facil ayudarte...
por otro lado recuerda que la lib fpd porlo menos en su web recomienda pasar la menor cantidad de informacion si lo realizas por get o post es mas creo k recomienda el metodo get para realizar el paso de info :-)
35. arturo_chavarro ~ Domingo, 03 Ago 2008 | 20:19H:
recuerden que ie presenta problemas por todo y con todo por ende recomiendo trabajar con mozilla que al estar estandarizado presenta menos fallos con las librerias desarrolladas diferentes a las de microsoft, que a diferencia de estas no poseen tantos errores...

