Foros del Web » Programando para Internet » PHP »

crear un pdf, el texto sacado de la bd

Estas en el tema de crear un pdf, el texto sacado de la bd en el foro de PHP en Foros del Web. Pues yo estaba buscando como crear un pdf a partir de un artículo (como joomla). Buscando por google encontré fpdf, lo probé y me gustó. ...
  #1 (permalink)  
Antiguo 01/05/2007, 23:44
Avatar de sumolari  
Fecha de Ingreso: mayo-2006
Ubicación: localhost
Mensajes: 1.367
Antigüedad: 17 años, 11 meses
Puntos: 18
Pregunta crear un pdf, el texto sacado de la bd

Pues yo estaba buscando como crear un pdf a partir de un artículo (como joomla).
Buscando por google encontré fpdf, lo probé y me gustó.
El problema que tengo es que no sé donde poner la consulta, para valores estáticos si que se usarlo, pero para dinámicos pues no.
  #2 (permalink)  
Antiguo 02/05/2007, 06:19
Avatar de DeeR  
Fecha de Ingreso: diciembre-2003
Ubicación: Santiago
Mensajes: 520
Antigüedad: 20 años, 4 meses
Puntos: 17
Re: crear un pdf, el texto sacado de la bd

para valores dinamicos (ej que extraes de una tabla) , guardalas en un string y luego se lo pasas como parametro al fpdf (dependiendo lo que estas haciendo) (ej imprimir texto enrequicido con xhtml en pdf).

Bueno , la otra vez un amigo del foro nombre el script html2fpdf , que es muy bueno, ademas que imprime tablas (en formato <table> de html/xhtml) ese script es mas simple de utilizar

Saludos
  #3 (permalink)  
Antiguo 02/05/2007, 15:01
Avatar de sumolari  
Fecha de Ingreso: mayo-2006
Ubicación: localhost
Mensajes: 1.367
Antigüedad: 17 años, 11 meses
Puntos: 18
Re: crear un pdf, el texto sacado de la bd

Buscando más info encontré esto http://www.fpdf.org/en/script/script10.php
Pero al modificarlo me el siguiente error
Cita:
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL
  #4 (permalink)  
Antiguo 02/05/2007, 15:05
Avatar de el cirujano  
Fecha de Ingreso: mayo-2003
Ubicación: Frente al PC
Mensajes: 609
Antigüedad: 20 años, 11 meses
Puntos: 3
Re: crear un pdf, el texto sacado de la bd

y el $link; que esta en el mysql_query? revisate la conexion a tu BD
__________________
CSS2 + AJAX + PHP + MySQL, una mezcla sin competencia!!!!!!
  #5 (permalink)  
Antiguo 02/05/2007, 23:24
Avatar de sumolari  
Fecha de Ingreso: mayo-2006
Ubicación: localhost
Mensajes: 1.367
Antigüedad: 17 años, 11 meses
Puntos: 18
Re: crear un pdf, el texto sacado de la bd

Bueno, estuve mirando mejoer el código, y me di cuenta que las tablas a la sque llamaba no exisían :
Así que modifique el código y tras ponerlo como lo necesito me da el mismo error:
Cita:
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in e:\servidor\www\ffextremo_cms\create_pdf.php on line 23

Warning: Cannot modify header information - headers already sent by (output started at e:\servidor\www\ffextremo_cms\create_pdf.php:23) in e:\servidor\www\ffextremo_cms\fphp\fpdf.php on line 1022
FPDF error: Some data has already been output to browser, can't send PDF file
El código que no funciona es este
Código PHP:
//For each row, add the field to the corresponding column
while($row mysql_fetch_array($result))
{
    
$title $row["title"];
    
$text substr($row["text"],0,20);
    
$category $row["category"];
    
    
$column_title $column_title.$title."\n";
    
$column_text $column_text.$text."\n";
    
$column_category $column_category.$category."\n";



Gracias por la ayuda
  #6 (permalink)  
Antiguo 03/05/2007, 00:55
 
Fecha de Ingreso: agosto-2004
Mensajes: 118
Antigüedad: 19 años, 8 meses
Puntos: 1
Re: crear un pdf, el texto sacado de la bd

Pasate por este enlace y ya me comentaras.

http://www.forosdelweb.com/f18/pdf-r-os-480341/
  #7 (permalink)  
Antiguo 05/05/2007, 08:40
Avatar de sumolari  
Fecha de Ingreso: mayo-2006
Ubicación: localhost
Mensajes: 1.367
Antigüedad: 17 años, 11 meses
Puntos: 18
Re: crear un pdf, el texto sacado de la bd

¡¡¡ Gracias, ya funciona !!!

Lo he probado y va muy bien, pero no consigo que coja los datos de otra tabla de mi BD.
Código PHP:
    //Datos
    
$fill=0;

    
$Sql "SELECT * FROM read ORDER BY id ASC";
    
$Query mysql_query($Sql);
    
    
//Bucle para generar los datos
    
while($row mysql_fetch_array($Query))
        {
        
$this->Cell($w[0],6,$row['text'],'LR',0,'C',$fill);        
        
$this->Ln();
        
$fill=!$fill;
        

        
        }    
    
$this->Cell(array_sum($w),0,'','T');
    }

}
//============================================================== 
El error que da es
Cita:
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in e:\servidor\www\ffextremo_cms\create_pdf.php on line 90

Warning: Cannot modify header information - headers already sent by (output started at e:\servidor\www\ffextremo_cms\create_pdf.php:90) in e:\servidor\www\ffextremo_cms\fphp\fpdf.php on line 1022
FPDF error: Some data has already been output to browser, can't send PDF file
También he intentado cambiar ORDER BY id ASC por WHERE Campo1 = %s y ha mostrado el mismo error.

Última edición por sumolari; 05/05/2007 a las 09:02
  #8 (permalink)  
Antiguo 07/05/2007, 09:48
Avatar de sumolari  
Fecha de Ingreso: mayo-2006
Ubicación: localhost
Mensajes: 1.367
Antigüedad: 17 años, 11 meses
Puntos: 18
Re: crear un pdf, el texto sacado de la bd

¿Hay alguna solución alternativa a fpdf, que haga lo que quiero?
  #9 (permalink)  
Antiguo 07/05/2007, 17:01
 
Fecha de Ingreso: abril-2007
Mensajes: 24
Antigüedad: 17 años
Puntos: 0
Re: crear un pdf, el texto sacado de la bd

Prueba asi:

Código PHP:
$link mysql_pconnect('localhost','root','');
mysql_select_db('nombre_BD');
$query "SELECT * FROM read WHERE campo LIKE '".$valor_de_variable_deseado."%'";
$result mysql_query($query);
$row mysql_fetch_array($result); 
por que no pones el codigo completo para ver en donde estan los errores del header, ok??
  #10 (permalink)  
Antiguo 08/05/2007, 06:20
Avatar de sumolari  
Fecha de Ingreso: mayo-2006
Ubicación: localhost
Mensajes: 1.367
Antigüedad: 17 años, 11 meses
Puntos: 18
Re: crear un pdf, el texto sacado de la bd

Cita:
Iniciado por marybella Ver Mensaje
Prueba asi:

Código PHP:
$link mysql_pconnect('localhost','root','');
mysql_select_db('nombre_BD');
$query "SELECT * FROM read WHERE campo LIKE '".$valor_de_variable_deseado."%'";
$result mysql_query($query);
$row mysql_fetch_array($result); 
por que no pones el codigo completo para ver en donde estan los errores del header, ok??
Me da el mismo error, el código es
Código PHP:
<?
//===================================================================
    //Raquerir la clase 'pdf' para la generación de ficheros pdf
    
require('fphp/fpdf.php');
        

    
/////////////////////////////////////////////////////////////
    //       Conectar a base de datos local
    /////////////////////////////////////////////////////////////
    
define('DB_USER'"root");
    
define('DB_PASSWORD'"");
    
define('DB_HOST'"127.0.0.1");         //conecta con servidor remoto
    
define('DB_NAME'"ffextremo_cms");


    
/////////////////////////////////////////////////////////////
    //       Conexión a mysql
    /////////////////////////////////////////////////////////////
    
$db_connection mysql_connect(DB_HOSTDB_USERDB_PASSWORD)
        or die(
Error_Mysql_Conect_DB());

    
//////////////////////////////////////////////////////////////
    //       Seleccionar db
    //////////////////////////////////////////////////////////////
    
mysql_select_db (DB_NAME);

//===================================================================

class PDF extends FPDF
{
    function 
PDF($orientation='l',$unit='mm',$format='A4')
    {    
    
//Llama al constructor de la clase padre
    
$this->FPDF($orientation,$unit,$format);
    
//Iniciacin de variables
    
$this->B=0;
    
$this->I=0;
    
$this->U=0;
    }

    function 
Header()
    {
    
//Logo
    //Arial bold 15
    
$this->SetFont('Arial','B',15);
    
//Movernos a la derecha
    
$this->Cell(80);
    
//T tulo
    
$this->Cell(80,10,'Artículo en PDF',1,0,'C');
    
//Salto de línea
    
$this->Ln(15);
    }

    
//Pie de página
    
function Footer()
    {
    
//Posicin: a 1,5 cm del final
    
$this->SetY(-15);
    
//Arial italic 8
    
$this->SetFont('Arial','I',8);
    
//Número de pgina
    
$this->Cell(0,10,'Página '.$this->PageNo().'/{nb}',0,0,'C');
    }

    
//colorear la tabla    y cargar datos
    
function FancyTable($header)
    {
    
//Colores, ancho de línea y fuente en negrita
    
$this->SetFillColor(255,0,0);
    
$this->SetTextColor(255);
    
$this->SetDrawColor(128,0,0);
    
$this->SetLineWidth(.3);
    
$this->SetFont('','B');
    
//Cabecera
    
$w=array(20,20,20,20,20,20,160);    
    for(
$i=0;$i<count($header);$i++)
        
$this->Cell($w[$i],7,$header[$i],1,0,'C',1);
    
$this->Ln();
    
//Restauración de colores y fuentes
    
$this->SetFillColor(224,235,255);
    
$this->SetTextColor(0);
    
$this->SetFont('');
    
//Datos
    
$fill=0;

    
$Sql "SELECT * FROM tbl_pruebas";
    
$Query mysql_query($Sql);
    
    
//Bucle para generar los datos
    
while($row mysql_fetch_array($Query))
        {
        
$this->Cell($w[0],6,$row['Campo1'],'LR',0,'C',$fill);        
        
$this->Ln();
        
$fill=!$fill;
        

        
        }    
    
$this->Cell(array_sum($w),0,'','T');
    }

}
//==============================================================

//Iniciar documento PDF
$pdf=new PDF();
$pdf->AliasNbPages();
//T tulos de las columnas
$header=array('');
$pdf->SetFont('Arial','',10);
$pdf->AddPage();
$pdf->FancyTable($header);
$pdf->Output();

?>
Con tu código sería (supongo)
Código PHP:
<?
//===================================================================
    //Raquerir la clase 'pdf' para la generación de ficheros pdf
    
require('fphp/fpdf.php');
        

    
/////////////////////////////////////////////////////////////
    //       Conectar a base de datos local
    /////////////////////////////////////////////////////////////
    
define('DB_USER'"root");
    
define('DB_PASSWORD'"");
    
define('DB_HOST'"127.0.0.1");         //conecta con servidor remoto
    
define('DB_NAME'"ffextremo_cms");


    
/////////////////////////////////////////////////////////////
    //       Conexión a mysql
    /////////////////////////////////////////////////////////////
    
$db_connection mysql_connect(DB_HOSTDB_USERDB_PASSWORD)
        or die(
Error_Mysql_Conect_DB());

    
//////////////////////////////////////////////////////////////
    //       Seleccionar db
    //////////////////////////////////////////////////////////////
    
mysql_select_db (DB_NAME);

//===================================================================

class PDF extends FPDF
{
    function 
PDF($orientation='l',$unit='mm',$format='A4')
    {    
    
//Llama al constructor de la clase padre
    
$this->FPDF($orientation,$unit,$format);
    
//Iniciacin de variables
    
$this->B=0;
    
$this->I=0;
    
$this->U=0;
    }

    function 
Header()
    {
    
//Logo
    //Arial bold 15
    
$this->SetFont('Arial','B',15);
    
//Movernos a la derecha
    
$this->Cell(80);
    
//T tulo
    
$this->Cell(80,10,'Artículo en PDF',1,0,'C');
    
//Salto de línea
    
$this->Ln(15);
    }

    
//Pie de página
    
function Footer()
    {
    
//Posicin: a 1,5 cm del final
    
$this->SetY(-15);
    
//Arial italic 8
    
$this->SetFont('Arial','I',8);
    
//Número de pgina
    
$this->Cell(0,10,'Página '.$this->PageNo().'/{nb}',0,0,'C');
    }

    
//colorear la tabla    y cargar datos
    
function FancyTable($header)
    {
    
//Colores, ancho de línea y fuente en negrita
    
$this->SetFillColor(255,0,0);
    
$this->SetTextColor(255);
    
$this->SetDrawColor(128,0,0);
    
$this->SetLineWidth(.3);
    
$this->SetFont('','B');
    
//Cabecera
    
$w=array(20,20,20,20,20,20,160);    
    for(
$i=0;$i<count($header);$i++)
        
$this->Cell($w[$i],7,$header[$i],1,0,'C',1);
    
$this->Ln();
    
//Restauración de colores y fuentes
    
$this->SetFillColor(224,235,255);
    
$this->SetTextColor(0);
    
$this->SetFont('');
    
//Datos
    
$fill=0;
    
$id $_GET['id']; 
    
$link mysql_pconnect('localhost','root','');
    
mysql_select_db('ffextremo_cms');
    
$query "SELECT * FROM read WHERE id LIKE '".$id."%'";
    
$result mysql_query($query);
    
    
//Bucle para generar los datos
    
while($row mysql_fetch_array($result))
        {
        
$this->Cell($w[0],6,$row['Campo1'],'LR',0,'C',$fill);        
        
$this->Ln();
        
$fill=!$fill;
        

        
        }    
    
$this->Cell(array_sum($w),0,'','T');
    }

}
//==============================================================

//Iniciar documento PDF
$pdf=new PDF();
$pdf->AliasNbPages();
//T tulos de las columnas
$header=array('');
$pdf->SetFont('Arial','',10);
$pdf->AddPage();
$pdf->FancyTable($header);
$pdf->Output();

?>
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 06:34.