Foros del Web » Programando para Internet » PHP »

problema para crear pdf con libreria tcpdf

Estas en el tema de problema para crear pdf con libreria tcpdf en el foro de PHP en Foros del Web. Hola gente, les cuento lo que me pasa, instalé en mi web la librería tcpdf para crear archivos pdf de los artículos que se publican ...
  #1 (permalink)  
Antiguo 19/03/2007, 09:40
Avatar de ZydRick  
Fecha de Ingreso: febrero-2005
Ubicación: Lima
Mensajes: 750
Antigüedad: 19 años, 9 meses
Puntos: 4
problema para crear pdf con libreria tcpdf

Hola gente, les cuento lo que me pasa, instalé en mi web la librería tcpdf para crear archivos pdf de los artículos que se publican en mi web, buscando por google encontré un manual que explica como usarlo y da una pequeña clase PHP para crear pdfs y un script de ejemplo, la clase es la siguiente

clasepdf.php
Código PHP:
<?php
    
class crearpdf {
        
        var 
$pdf;    
        var 
$nombre_archivo;
        var 
$descargar FALSE;
        var 
$patch K_PATH_MAIN// Patch Default del TCPDF
        
        // Funciones
        
        // Constructor
        
function crearpdf($nombre,$descargar) {    
             
// Instanciamos el Objeto
            
$this->pdf = new TCPDF(PDF_PAGE_ORIENTATIONPDF_UNITPDF_PAGE_FORMATtrue);
            
// Damos nombre al Archivo
            
$this->nombre_archivo=$nombre;
            
/*  $descargar TRUE Descargar Archivo
                True  Descargar Archivo
                False Crear Archivo
            */
            
if ($descargar) {
                
$this->descargar=TRUE;
            } else {
                
$this->descargar=FALSE;
            }
        }
        
        
// Cambiar Ruta del Archivo
        
function ruta($ruta) {    
            if (
is_dir($ruta)) {
                
$this->patch=$ruta;
                return 
TRUE;    
            } else {
                return 
FALSE;
            }
        }
        
        
// Crear el Archivo PDF
        
function texto($string) {
            
// $string debe ser un String
            
if ( is_string ($string) ) {
                
// Seteamos Info del Documento
                
$this->pdf->SetCreator(PDF_CREATOR);
                
$this->pdf->SetAuthor(PDF_AUTHOR);
                
$this->pdf->SetTitle($doc_title);
                
$this->pdf->SetSubject($doc_subject);
                
$this->pdf->SetKeywords($doc_keywords);
                
$this->pdf->SetHeaderData(PDF_HEADER_LOGOPDF_HEADER_LOGO_WIDTHPDF_HEADER_TITLEPDF_HEADER_STRING);
    
                
// Seteamos Margenes
                
$this->pdf->SetMargins(PDF_MARGIN_LEFTPDF_MARGIN_TOPPDF_MARGIN_RIGHT);
                
$this->pdf->SetAutoPageBreak(TRUEPDF_MARGIN_BOTTOM);
                
$this->pdf->SetHeaderMargin(PDF_MARGIN_HEADER);
                
$this->pdf->SetFooterMargin(PDF_MARGIN_FOOTER);
                
$this->pdf->setImageScale(PDF_IMAGE_SCALE_RATIO); 
                
$this->pdf->setHeaderFont(Array(PDF_FONT_NAME_MAIN''PDF_FONT_SIZE_MAIN));
                
$this->pdf->setFooterFont(Array(PDF_FONT_NAME_DATA''PDF_FONT_SIZE_DATA));
                
$this->pdf->setLanguageArray($l);
                
// Inciciamos Documento 
                
$this->pdf->AliasNbPages();
                
$this->pdf->AddPage();
                
// Codigo de Barra para el Foot
                
$this->pdf->SetBarcode(date("Y-m-d H:i:s"time()));
                
// Escribimos el archivo
                
$string=utf8_encode($string);
                
$this->pdf->WriteHTML($stringtrue0);
                
// ¿ Creamos o Descargamos ?
                
if ($this->descargar) {
                    
$this->pdf->Output();
                } else {
                    
$this->pdf->Output($this->nombre_archivo,$this->$patch);
                }
            }
        }
    }
?>
y el script de ejemplo es el siguiente:

creapdf.php
Código PHP:
<?
    
// Include de la Libreria TCPDF
    
require_once('tcpdf/config/lang/eng.php');
    require_once(
'tcpdf/tcpdf.php');
    
// Incluimos la Clase class.crearpdf.php
    
include('clasepdf.php');
    
    
// Usamos La Clase class.crearpdf.php
    
$pdf = new crearpdf("archivo.pdf",1);
    
$pdf->texto('<font color="#0CAA0C"><h1><strong>Nuestro Segundo Ejemplo de PDF<br /></strong></h1></font>
    
    Ahora utilizamos la Simple Clase que hemos creado para realizar nuestro PDF de forma mas simple y podamos hacerlo desde cualquier parte de un Script.<br /><br />
    
    Recordemos que estamos Usando la Libreria/Clase <font color="#0033CC"><strong>TCPDF</strong></font> basada en <font color="#0CAA0C"><strong>FPDF</strong></font> con la <font color="#EF9E1F"><strong>Simple Clase</strong></font> , en nuestro Articulo en la <strong><i>Comunidad</i> <font color="#06AAEE">DeeRme</font></strong> Podemos Usar Distintos Tamaños de Letra, Colores y hasta Imagenes, eso si usando <font color="#DD01C6">XHTML</font> valido.
    <br><br>
    <img src="http://www.deerme.org/images/header2.jpg">'
);
?>
ahora bien, el problema que tengo es que cuando subo estos dos archivos a mi web y ejecuto me tira el siguiente mensaje:

Cita:
TCPDF error: Some data has already been output, can't send PDF file
mirando el script de la clase y el de ejemplo no pude ser capaz de ver donde está la falla por ello recurro a ustedes para que me echen una mano, espero que si alguien aquí ha usado dicha librería me pueda ayudar.

gracias por anticipado.

Saludos
  #2 (permalink)  
Antiguo 19/03/2007, 10:19
Avatar de DeeR  
Fecha de Ingreso: diciembre-2003
Ubicación: Santiago
Mensajes: 520
Antigüedad: 20 años, 11 meses
Puntos: 17
Re: problema para crear pdf con libreria tcpdf

Q tal ZydRic
Que bueno q encontraste mi articulo x google :P

Creo que lo que sucede, es que el directorio, que especificaste para que trabaje el tcpdf, este debe tener permisos 666 o 777 (mas que nada permisos de escritura).

al directorio cache le debes dar permisos 777 o 666 (via ftp puedes)


Saludos

***********************
mm leyendo acerca del error ... creo que se solucionaria si agregas la linea
ob_end_clean(); al principio en el crearpdf.php

Saludos

Última edición por DeeR; 19/03/2007 a las 10:28 Razón: olvido
  #3 (permalink)  
Antiguo 19/03/2007, 10:57
Avatar de ZydRick  
Fecha de Ingreso: febrero-2005
Ubicación: Lima
Mensajes: 750
Antigüedad: 19 años, 9 meses
Puntos: 4
Re: problema para crear pdf con libreria tcpdf

Hola DeeR, gracias por el artículo que publicaste, bueno ahora con esa función se arregló y crea el pdf, pero hay un detalle que usando el script de descarga que pusiste pues no lo descarga, sólo lo muestra en el navegador, hay algo más que se deba añadir a ese pequeño script?.

Gracias nuevamente.

Saludos

PD: me olvidaba, cómo puedo hacer para en lugar de que aparezca el código de barras en el pie de página aparezca por ejemplo el nombre de mi página?
  #4 (permalink)  
Antiguo 19/03/2007, 11:45
Avatar de ZydRick  
Fecha de Ingreso: febrero-2005
Ubicación: Lima
Mensajes: 750
Antigüedad: 19 años, 9 meses
Puntos: 4
Re: problema para crear pdf con libreria tcpdf

Hola de nuevo DeeR probando tu script para crear un pdf a partir de una tabla de MySQL en el cual uso tags BBCode para transformarlos luego a HTML(esto al momento de publicar un artículo), cuando quiero obtener un archivo PDF de un determinado artículo me muestra una hoja en blanco, modifiqué el script de esta forma:

Código PHP:
<?
    ob_end_clean
();
    if(
$s == "tutoriales" && "c" && "id_tuto") {
        
// Include de la Libreria TCPDF
        
require_once('tcpdf/config/lang/eng.php');
        require_once(
'tcpdf/tcpdf.php');
        
// Incluimos la Clase class.crearpdf.php
        
include('config.php');
        include(
'clasepdf.php');
        
        include(
'bbcode1.php');// para convertir los tags bbcode a html
        
$ct strtr($_GET['categoria'], '-'' ');
        
$ct trim($ct);
        
$query "SELECT tut.*, cat.id_cat, cat.categoria FROM tutoriales tut, tutscat cat WHERE tut.id_tuto='$id_tuto' AND tut.categoria=cat.categoria";
        
$resp mysql_query($query);
        while (
$datos mysql_fetch_assoc($resp)) { 
            
$fecha date("d/m/Y",$datos[fecha]);
            
$c $datos[id_cat];
            
$autor $datos[autor];
            
$contenido bbcode($datos[contenido]); // funcion que convierte los tags bbcode a html
            
$contenido php($texto); // busca el codigo php y lo colorea
            
$com $datos[comentarios];
        
            
// Usamos La Clase class.crearpdf.php
            
$pdf = new crearpdf("tcpdf/".$datos[titulo].".pdf",1);
            
$pdf->texto(''.$contenido.'');
        }
    }
?>
Como te repito, el problema está en que no me muestra nada más que una hoja en blanco, espero que me puedas orientar al respecto :)

Saludos.
  #5 (permalink)  
Antiguo 19/03/2007, 12:21
Avatar de DeeR  
Fecha de Ingreso: diciembre-2003
Ubicación: Santiago
Mensajes: 520
Antigüedad: 20 años, 11 meses
Puntos: 17
Re: problema para crear pdf con libreria tcpdf

Cita:
... pero hay un detalle que usando el script de descarga que pusiste pues no lo descarga, sólo lo muestra en el navegador, hay algo más que se deba añadir a ese pequeño script?...
Lo muestra en el navegador, debido a que el Nevagador esta configurado para q abra el Acrobat Reader , estos se puede modificar, para que envez lo abra, lo descarge, o mejor utilziar PDF Reader Foxit (visor de pdf mas rapido q el de adobe :P).

Respecto a lo segundo, el TCPDF es esquisto con el Codigo XHTML , debe estar bien estructurado.

Lo mejor seria que imprimieras la variable $contenido para ver como esta su contenido, para ver si talvez te equibocaste en alguna etiqueta, etc ...

Saludos.
  #6 (permalink)  
Antiguo 19/03/2007, 12:32
Avatar de ZydRick  
Fecha de Ingreso: febrero-2005
Ubicación: Lima
Mensajes: 750
Antigüedad: 19 años, 9 meses
Puntos: 4
Re: problema para crear pdf con libreria tcpdf

pues las etiquetas xhtml están bien, no entiendo porqué no funciona :S
  #7 (permalink)  
Antiguo 19/03/2007, 12:48
Avatar de ZydRick  
Fecha de Ingreso: febrero-2005
Ubicación: Lima
Mensajes: 750
Antigüedad: 19 años, 9 meses
Puntos: 4
Re: problema para crear pdf con libreria tcpdf

parece que ya está arreglado, salvo un detalle, al parecer no reconoce el tag de centrado de texto, los float(right o left) y las imágenes me las muestra en miniatura y no en su tamaño normal, además que no crea el archivo pdf en la carpeta tcpdf en el servidor a pesar que tiene los permisos CHMOD a 777 sabes a qué se debe eso?

Última edición por ZydRick; 19/03/2007 a las 12:54
  #8 (permalink)  
Antiguo 19/03/2007, 14:52
Avatar de DeeR  
Fecha de Ingreso: diciembre-2003
Ubicación: Santiago
Mensajes: 520
Antigüedad: 20 años, 11 meses
Puntos: 17
Re: problema para crear pdf con libreria tcpdf

Cita:
Iniciado por ZydRick Ver Mensaje
parece que ya está arreglado, salvo un detalle, al parecer no reconoce el tag de centrado de texto, los float(right o left) y las imágenes me las muestra en miniatura y no en su tamaño normal, además que no crea el archivo pdf en la carpeta tcpdf en el servidor a pesar que tiene los permisos CHMOD a 777 sabes a qué se debe eso?
Sips lo de las imagenes, se puede modificar en la config del tcpdf (ve su docs) , lo otro, para poder grabar el archivo en el servidor ( es decir, no se lo envie al usuario), debes

$pdf = new crearpdf($datos[titulo].".pdf",0);


Con el 0 crea el archivo en el servidor (no se lo envia al navegador)
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.
Tema Cerrado




La zona horaria es GMT -6. Ahora son las 13:00.