La Terminal

Paso de valores para el PDF – clase fpdf

Posted on: julio 2, 2007

Actualización 02 julio 2007:

Debido al comentario de Cis (ver mipdf trabajando con fpdf)  hice la prueba al recibir los datos de un formulario y no hay ningún problema con el paso de valores dejo el ejemplo como referencia, solo faltaría probar con variables de sesión :S aunque un compañero de trabajo me dijo que él probó y no funcionó. ¿Alguien que se anime?

El formulario:

<html>
<head><title>Paso de valores al PDF</title>
</head>
<body>
<center>
<form action=”pasopdf.php” name=”form1″ method=”post”>
Calendario<input name=”fecha_opcion” type=”text”><br>
<input name=”Enviar” type=”submit” value=”Envio de Fecha”>
</form>
</center>
</body>
</html>

El documento php para generar el PDF:

<?php
$fecha = $_POST[‘fecha_opcion’];
$micumpleanios = ’06-03-1981′;
require(“../fpdf/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’,12); //Establece la fuente a utilizar, el formato Negrita y el tamaño

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

$pdf->Cell(0,10,’Fecha elegida ‘.$fecha,0,1,’C’);
$pdf->Cell(0,12,’Mi cumpleaños ‘.$micumpleanios,0,1,’C’);
$pdf->Cell(0,14,’Fecha elegida sin asignar ‘.$_POST[‘fecha_opcion’],0,1,’C’);

$pdf->Output(); //Envía como salida del documento
?>

Ahora que si no entendí la pregunta por favor vuelvela a realizar😛

Saludos.

37 comentarios to "Paso de valores para el PDF – clase fpdf"

Hola Alberto! gracias por tu respuesta tan pronta!
Te cuento:
Tengo una pagina php donde mantengo informacion sobre operaciones de venta. En el action del form, tengo el llamado a la pagina que graba todos esos datos en la base (el submit lo hago luego de validar los datos en una funcion javascript).
En la misma pagina, tengo un botón “imprimir operación” que en su onClick llama a otra funcion javascript donde hago un

window.open(“op_imprimirPDF.php?id=”+id,…);

Esa pagina es la que tiene la clase para imprimir el reporte. Las variables que no logro ver son las q envio en la url (como el id).

Seguramente hay una forma mas sencilla, soy bastante novata en todo esto, pero de a poco va saliendo!

Te agradezco nuevamente tu respuesta y espero puedas ayudarme con esto!.

CiS

Una cosita mas!
En distintas partes de mi sitio envio las variables por la URL, y no tuve nunca problema! por eso no entiendo que me esta faltando en ésta.

Bueno CiS hice una pruebas y funcionó, 2 parametros pasados por url y recibidos en el archivo que genera el pdf.

El código lo pondré en unas horas, disculpa que no pueda ponerlos ahora mismo, pero tengo unos pendientes del trabajo🙂

Lo que te puedo decir es que la información yo la mando de la siguiente forma:
nombre_variable=document.nombre_forma.nombre_atributo.value

Saludos.

No se como agradecerte el tiempo que estás dedicando a esto! Ni hablar que no quisiera que se complique tu trabajo por ayudarme!
Mil mil gracias!!!!

Mi problema creo que reside en que estoy usando mal fpdf. Yo descargué del sitio de Olivier (http://www.fpdf.org/) un script con una clase para armar tablas con mysql (el nombre del script: “Table with MySQL”) . Y uso directamente la clase para generar el reporte (ahi debe estar mi error).
Para los reportes estaticos no tuve problema, pero ¿puede ser que para “leer” las variables de la pagina que la llama, necesite mantener la session? Como veras no manejo algunos conceptos. Probe de agregar al principio de la pagina session_start() y ni me muestra el reporte, me da directamente la opción de “guardar”.

Estoy reescribiendo la segunda pagina para ver si es eso (que sea una pagina php normal que USE la nueva clase para tablas), en cuanto la tenga, te comento como me fue.

Saludos! y de nuevo: GRACIAS!😉
CiS

Está confirmado: soy un desastre!😛 jaja Estaba usando mal la clase!

Ya puedo ver mis variables, y estoy configurando mi reporte.
Alberto: gracias por tu ayuda! De mas está decir que si puedo colaborar en algo, cuenta conmigo!

Saludos amigo!🙂

CiS

[…] parecer ya solucionó su problema CiS más información en el mensaje anterior […]

Podrías explicar que estabas haciendo mal para tenerlo en cuenta.

Si gustas puedes mandar los ejemplos y/o el pdf terminado para mostrarlo en el blog mi email ya lo sabes🙂

Por cierto lo anterior también podrías colocarlo en el foro donde hiciste la consulta, así ayudas a otras personas de paso🙂

Saludos.

P.D. Otra forma es visitar el blog de vez en cuando para ayudar o proponer algún tema😛 que hay ocasiones que no se ni que poner, muchas veces por falta de tiempo je, je..

Hola

Ayuda, quiera saber como paso valores de mysql a pdf, tengo un formulario en el que se rellenan los datos y luego los guardo en una DB y lo q me gustaria es generar un reporte de eso datos almacenados, no quiero q se impriman todos los datos si no los q yo selecciones (por ID).

Saludos

tengo el problema que dice Cis con lo del session_start()… en lugar de mostrarme el pdf, me aparece la opcion guardar, no se que hacer… porfa auxilio… y gracias

Hola,
intento generar un pdf con la libreria fpdf a partir de un formulario pero me sale el siguiente mensage:

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

No se que puedo estar haciendo mal, porque sin introducir las variables del formulario me genera perfectamente el pdf (probando el típico hello word!). A continuación introduzco mi código:

AddPage(); // Agrega una hoja al documento.
$pdf->SetFont(‘Arial’,’B’,12); //Establece la fuente a utilizar, el formato Negrita y el tamaño
//La siguiente instrucción escribe el siguiente mensaje.
$pdf->Cell(0,10,’Hola ‘.$uno,0,1,’C’);
$pdf->Cell(0,12,’apellidos ‘.$dos,0,1,’C’);
$pdf->Output(); //Envía como salida del documento
?>

Edite tu primer mensaje y lo combine con el último para que no quedará redundante.

Hola alberto emot, mira por lo que entiendo el mensaje dice que ya has mandado algo (echo, print, etc) cualquier instrucción de salida inclusive un espacio en blanco donde no debe.

Por lo anterior el pdf no puede generarse, las cabeceras ya fueron enviadas normalmente como texto y no como pdf que es como se pretende.

En el sitio oficial de FPDF sección FAQ en el punto 9 comentan algo también:
http://www.fpdf.org/es/FAQ.php#9

Lo que explican en el FAQ normalmente se corrige con verificar que no estas mandando nada a imprimir antes del pdf.

Haciendo una consulta rápida en San Google mencionan lo siguiente:

http://216.40.226.14/foros/mensaje.phtml?foro=3&msg=41124
Hola, después de mucho buscar la solución FPDF error: Some data has already been output, can’t send PDF file, encontre la instrucción ob_end_clean() y problema resuelto.

No dejo el código por que WordPress lo edita y no se ve, pero en el enlace puedes consultarlo.

ob_end_clean — Limpiar (eliminar) y deshabilitar los búferes de salida. Los detalles de la función en:
http://mx.php.net/manual/es/function.ob-end-clean.php

P.D. Si aún así no funciona si quieren mandalo al email de contacto.

hola quisiera saber
como hago para enviar los pdf’s que creo a una carpeta creada para este fin

gracias

Jejeje… muchas gracias por enviarme tú código Alberto =] es obvio que los que lo solicitamos es para darnos una idea de cómo podemos hacer lo que no se nos da tan facilmente. Por compartir tus conocimientos gracias.

PD. Honor a quien honor merece😉

Gracias nuevamente =)

Al contrario es un gusto saber que algo del contenido del blog es útil para los demás, de paso justifico algunos ratos de ocio en el mismo con mi esposa ja, ja..🙂

Saludos.

OLLE TENGO UNA PREGUNTOTOTTOTAAA….
sabes como primero jalar informacion de una base de datos despues convertirlo a pdf ….. osea; primero tomar un campo de una tabla la inf contenida y depues usar esa informacion y despues convertirlo a pdf

Mmm.. pues si no me falla la memoria, primero sacas los datos de la tabla y cuando ya tienes todo generas el PDF.

En pocas palabras todo lo haces en el mismo script, recuerda que la salida será el PDF con los datos.

Haz la prueba y si tienes problemas me dices para ver en que te puedo ayudar.

Saludos.

olle disculpa pero como podria utilizar los valores que estan contenidos en una base de datos… lo e intentado en base a esto pero no veo k funcione me sale “resourse#4″ cuando intento pasar un valor si convierte a pdf pero donde se supone debe aver un valor sale eso .. podrias ayudarme gracias

Me gustaria saber como configuro el tamaño de una hoja, quiero imprimir una boleta con ciertas medidas especificas

En la parte superior de esta página encontrarás la etiqueta FPDF, donde están listados varios post sobre pdf.

O da un click aquí:
https://laterminal.wordpress.com/tutoriales-y-referencias/

Ahí hay tema que resuelve lo que solicitas

Saludos.

Hola, probé hacer lo que dicen:

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

pero me sale el siguiente error:
Fatal error: Call to a member function Cell() on a non-object

alguien sabe que estoy haciendo mal????

Yo estoy trabajando actualmente con FPDF, y me voy dando cuenta que cell sirve solamente para valores en bruto por ejemplo ” $Var ” no sirve para arreglos como tienes en tu codigo ( row[1]) para eso se ocupa $pdf->row( bla bla bla).Saludos

No entiendo en donde puede estar el error Laura copie y pegue tu código con una consulta a otra tabla que tengo muy similar (solo 2 campos numérico y cadena) y no tengo problemas con la salida.

Ojalá pudieras mandar el script completo o hacer pruebas “aisladas”, intenta ejecutar el fragmento de código que mencionas y veras que no hay problemas.

Saludos.

P.D. Cualquier cosa vuelve a comentar para ver de que forma te podemos ayudar.

hola de nuevo, temgo una preguntica como hago para poner una imagen en la pagina 2 de mi pdf habiendo ya insertado la imagen del cabezote.
oses, lo q me pasa es q si pongo otra imagen con el parametro Image(‘images/logo.jpg’,27,280,50,0,”,”); ok yo la voy acomodando pues digo la segunda imagen pero no me deja ponerla en otra pagina q tenga el problema aqui es q quiero poner otra imagen distinta en la segunda pagina y no puedo porq si sigo dandole amplitud al eje y no vaja a la segunda pagina sino q se pierde en la primera porq ya no hay mas espacio.
¿porfavor es urgente cualquier recomendacion la aplicare con seguridad?

mm.. no entiendo muy bien que es lo que quieres, sustituir la imagen del header o colocar otra imagen “debajo” del header de la segunda página.

Son cosas distintas, si es la segunda solo ajusta la posición del eje Y.

Si es la primera, tendrás que adecuar el método header para que reciba parámetros y puedas cambiar la imagen.

Saludos.
P.D. Por ahora no tengo tiempo, por ahí debo tener algo parecido, pero antes explica bien que necesitas.

Hola Alberto, soy novata en esto de la programación, pero tengo un problemón inmenso con el sistema que debo hacer para mis pasantías… El problema radica en lo siguiente: Debo generar reportes en documentos pdf, a partir de campos seleccionados por el usuario desde diferentes tablas, las cuales están almacenadas en una base de datos postgre… La cuestión es, en los ejemplos que me dieron para trabajar, existen una serie de “rutas” (no se que otro nombre darle) como las siguientes:
require_once(“../../lib/yaml/Yaml.class.php”);
$opciones = Yaml::load($reporte.”.yml”);
$modulo=$opciones[“Parametros”][“modulo”];
include_once(“../../lib/general/headhtml.php”);
require_once(“../../lib/modelo/business/”.$modulo.”.class.php”); y realmente quisiera saber como usarlas correctamente y en que formularios se hace, dado que cada reporte consta de tres formularios .php, pdf.php y .yml
Se que es algo ambigua mi pregunta, pero cualquier información que puedas darme al respecto te la sabre agradecer enormente..
Athner…

Bueno para empezar debes investigar como funciona cada una de las instrucciones que muestras, así rápido:

include_once y require_once: Incluye y evalúa el fichero especificado durante la ejecución del script. Si el código ha sido ya incluido, no se volverá a incluir.

Debería de usarse en casos en los que, un mismo fichero puede ser incluido y evaluado más de una vez durante la ejecución de un script, y se quiere estar seguro que se incluye una sola vez para evitar problemas con redefiniciones de funciones, valores de funciones, etc.

La diferencia entre require e include, es que si el fichero no existe:
* include mostrara un warning y continuara con la ejecucion
* require mostrara un fatal error y parara la ejecucion

En tu caso esta línea:

require_once(”../../lib/yaml/Yaml.class.php”);

Indica que el archivo Yaml que al parecer es la definición de una clase se incluya una vez, el cual esta ubicado 2 directorios arriba del actual.

Esta otras líneas:

$opciones = Yaml::load($reporte.”.yml”);
$modulo=$opciones["Parametros"]["modulo"];

El alcance del (::) operador de resolución (también llamado Paamayim Nekudotayim) o en términos simples, dobles dos puntos, es un símbolo que permite acceso a los miembros o métodos estaticos, constantes, y eliminados de una clase.

Cuando se referencían estos elementos desde afuera de la definición de la clase, usan el nombre de la clase.

Cargan el archivo con extensión YML donde reporte puede tener cualquier nombre.

Una vez cargado, al parecer regresa una matriz de valores donde se obtienen datos del modulo que pudiera ser el nombre del mismo.

Por último esta línea:

require_once(”../../lib/modelo/business/”.$modulo.”.class.php

Carga otra clase donde módulo es el nombre que se obtuvo de cargar el archivo YAML.

Para más info de que es YAML acá, el cual nunca he utilizado pero tampoco es que sea algo del otro mundo por lo que leí.

Lo normal por lo que veo es que obtengas los datos de la BD en un archivo php, después a esos datos les das formato con la clase YAML y lo mandas como pdf aunque no veo que la incluyas o al menos no se ve en este pedazo de código que mencionas.

hola Alberto se que esto ya debe cansarte hablar de lo mismo y lo mismo sorry pero tu pagina es muy buena y realmente es la unica que explica algo mas profundo del tema, xq la verdad he leido mucho y no encontrado lo que realmente quiero…
Bueno tengo un formulario que es un reporte de una base de datos en mysql, el problema es que he intentado incluir lo del pdf a mi funcion en php pero me sale ese problema de los espacio y la verdad estoy un poco perdida en eso…. no se si es mucho pedir un ejemplo donde convierta a pdf utilizando formularios con la base de datos xfa y de antemano muchas gracias… de verdad dedicas un buen tiempo a tu pagina felicitaciones bye

¡Que tal Maya!, espero te encuentres bien, respecto a tu comentario pues que te puede decir =P no aún no me he cansado de responder, aunque si de publicar en el blog aunque por falta de tiempo.

Ya te respondí por correo.

Gracias por tu comentarios, Saludos.

Hola. Mi problema es que cuando hago la conexion a mi base de datos me aparece el error de “PDF error: Some data has already been output, can’t send PDF file”. y si nada mas tengo instrucciones fpdf si me lo genera, que es lo que estara pasando?

Hola, necesito que me ayuden por favor…
Si pueden envíenme algún ejemplo en el que creen un PDF a partir de una consulta, y que salga en forma de tabla…

Saludos y gracias de antemano…

Hola!!!
Tengo problemas con fpdf.
Hice un script el cual obtiene un dato que viene de un form, lo capto (en el documento donde genero el pdf) así:

$var1=$_POST[‘variablef’];

Y hago una consulta así:

$consulta=@mysql_query(“select campo1, campo2, campo3 from tabla where campo4=’$var1′”); $resultado=@mysql_fetch_array($consulta);

E imprimo el dato así:
$pdf->Cell(80,5,’Dato: ‘.$resultado[campo1].’.’,0,1,’C’);
$pdf->Cell(80,5,’Dato: ‘.$resultado[campo2].’.’,0,1,’C’);
$pdf->Cell(80,5,’Dato: ‘.$resultado[campo3].’.’,0,1,’C’);

Pero no resulta, no me verifica si campo4 es igual a $var1, ya sustitui var1 por su valor real en la tabla y si me hace el query, no sé que esté mal, espero puedas ayudarme.

Te dejo un enlace con mi problema:
http://www.forosdelweb.com/f18/usando-fpdf-786484/

Gracias, buen día.

Yo tengo un problema, e intentado todos los codigos que encuentro, y simplemente no me genera un PDF, me muestra la página en blanco.

Incluso intenté con el ejemplo que tienes aqui, pero igual me sale la pagina en blanco. Alguien sabe por que? será que estoy poniendo mal la direccion del include?

Estoy usando el modelo mvc y para abrir lo que seria pasopdf.php se llama a una vista, y la vista me la muestra en blanco.

Alguna idea ?

Qué verión de php tienes, tuve el mismo problema por tener una versión anterior a la 5.
Puedes checar tu versión ejecutando una página con el código:

Ahora trata que la página que construye el pdf esté al mismo nivel de carpetas que la página donde estas generando tu pdf.

Suerte🙂

Hola, yo quisiera saber si existe una posibilidad de mandar parámetros de el id de un div –> y que lo que estuviera mostrando eso me lo imprimiera en un pdf

De ante mano gracias

Saludos

perdón era el id de una tabla table id=tbl

versos! lei todo y me dejaron igual!!!

alguien me puede ayudar xfavor tengo un problema no se como imprimir los valores de session en el pdf.

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

julio 2007
L M X J V S D
« Jun   Ago »
 1
2345678
9101112131415
16171819202122
23242526272829
3031  

Blog Stats

  • 1,084,349 hits

FeedBurner

Flickr Photos

Torre Pemex

Miercoles Jarocho2

Miercoles Jarocho

Los músicos

Jaraneros y Arpa

Más fotos
A %d blogueros les gusta esto: