Foros del Web » Programando para Internet » PHP »

Texto de varias lineas en FPDF

Estas en el tema de Texto de varias lineas en FPDF en el foro de PHP en Foros del Web. Buenas gente, yo de nuevo.. les cuento que estoy trabado un poco con esta libreria FPDF. El tema es así, tengo un archivo llamado imprimir_reporte.php, ...
  #1 (permalink)  
Antiguo 20/01/2013, 15:52
 
Fecha de Ingreso: mayo-2011
Ubicación: Córdoba Capital
Mensajes: 15
Antigüedad: 12 años, 11 meses
Puntos: 1
Texto de varias lineas en FPDF

Buenas gente, yo de nuevo.. les cuento que estoy trabado un poco con esta libreria FPDF. El tema es así, tengo un archivo llamado imprimir_reporte.php, el cual por medio de una consulta sql me trae (en este caso) todos los turnos de un día específico.

Al pdf lo creo con las siguientes lineas:

Código PHP:
<?php
session_start
();
include (
"../conexion.php");
include (
"function.php");
require (
'../employed/fpdf17/fpdf.php');

/////////////////////////////////////////////////////////////////////////////////////////////////////
//REFERENCIAS DE COMANDOS
/////////////////////////////////////////////////////////////////////////////////////////////////////
// SetFont(fuente, tipografia B = Negrita o I = Cursiva o '' = Normal , tamaño);
// Cell(ancho,alto,'texto',0 = No Linea o 1 = linea,0 = sigue o 1 = baja,justificado);
// new PDF(L = vertical o P = horizontal, unidad de medida CM, MM)

class PDF extends FPDF
    
{
    
/////////////////////////////////////////////////////////////////////////////////////////////////////
    //Creación de la Cabecera
    /////////////////////////////////////////////////////////////////////////////////////////////////////
    
function Header()
        {
        
//Nombre Empresa
        
$nombre_empresa "CEKIF";
        
$this->SetFont('Arial','B',32);
        
$this->Cell(60,10,$nombre_empresa,0,0,'L');
    
        
//Subtitulo Empresa
        
$subtitulo_empresa "Centro de Kinesiologia y Fisioterapia";
        
$this->SetFont('Arial','',11);
        
$this->Cell(217,10,$subtitulo_empresa,0,1,'R');
    
        
//Dirección Empresa
        
$direccion_empresa "Calle Gongora 448 - ALTA CORDOBA - C.P.: X5001BGJ - Tel.: 0351 - 4704179";
        
$this->SetFont('Arial','',8);
        
$this->Cell(277,5,$direccion_empresa,0,1,'L');
    
        
//Linea Separadora
        
$this->Cell(0,0,'',1,1,'');
    
        
//Nombre del Reporte
        
$this->SetFont('Arial','B',9);
        
$this->Cell(277,15,'DETALLES DE LOS TURNOS DEL DIA: '.$_SESSION['fecha'].'',0,1,'C');
        }

    
/////////////////////////////////////////////////////////////////////////////////////////////////////
    //Creación del pie de página
    /////////////////////////////////////////////////////////////////////////////////////////////////////
    
function Footer()
        {
        
$this->SetY(-10);
        
$this->SetFont('Arial','I',8);
        
$this->Cell(0,10,'Página '.$this->PageNo().'',0,0,'C');
        }
    }

/////////////////////////////////////////////////////////////////////////////////////////////////////
//Creación del PDF
/////////////////////////////////////////////////////////////////////////////////////////////////////

//Definimos la hoja a utilizar (L = vertical o P = horizontal)
$pdf=new PDF('L','mm');
//Agregamos las páginas
$pdf->AddPage();
//Definir fuente a utilizar
$pdf->SetFont('Arial','',8);
//Defino margen de arriba
$pdf->SetTopMargin(20);
//Defino margen de la izquierda
$pdf->SetLeftMargin(5); 
//Definimos margen de la derecha
$pdf->SetRightMargin(5);


/////////////////////////////////////////////////////////////////////////////////////////////////////
//Armamos la Tabla
/////////////////////////////////////////////////////////////////////////////////////////////////////

//Defino de donde empieza la tabla
$pdf->setXY(10,40);
//Defino la fuente a utilizar
$pdf->SetFont('Arial','',10);
//Defino el color de la fila
$pdf->SetFillColor(204,204,204);
//Defino los títulos de las tablas
$pdf->Cell(20,9,'Numero',1,0,'C',1);
$pdf->Cell(70,9,'Paciente',1,0,'C',1);
$pdf->Cell(30,9,'Medico',1,0,'C',1);
$pdf->Cell(30,9,'Especialidad',1,0,'C',1);
$pdf->Cell(87,9,'Motivo',1,0,'C',1);
$pdf->Cell(15,9,'Hora',1,0,'C',1);    
$pdf->Cell(25,9,'Observ.',1,1,'C',1);    
//DETALLE TABLA        


if (isset($_REQUEST['menu_medicos']))
    {
    
$_SESSION['menu_medicos'] = $_REQUEST['menu_medicos'];
    }
    
if (
$_SESSION['menu_medicos'] == "")
    {
    
$sql "SELECT * FROM agenda_turnos
            INNER JOIN medicos ON agenda_turnos.agenda_medico = medicos.id_medico
            INNER JOIN especialidades ON agenda_turnos.agenda_especialidad = especialidades.id_especialidad
            INNER JOIN pacientes ON agenda_turnos.agenda_paciente = pacientes.id_paciente
            INNER JOIN horarios_turnos ON agenda_turnos.id_horario_turno1 = horarios_turnos.id_horario_turno
            INNER JOIN estados_turnos ON agenda_turnos.agenda_estado = estados_turnos.id_estado_turno
            WHERE agenda_fecha = '"
.$_SESSION['fecha_selecionada']."'
            ORDER BY id_horario_turno1 ASC"
;
    }
elseif (
$_SESSION['menu_medicos'] == "Todos")
    {
    
$sql "SELECT * FROM agenda_turnos
            INNER JOIN medicos ON agenda_turnos.agenda_medico = medicos.id_medico
            INNER JOIN especialidades ON agenda_turnos.agenda_especialidad = especialidades.id_especialidad
            INNER JOIN pacientes ON agenda_turnos.agenda_paciente = pacientes.id_paciente
            INNER JOIN horarios_turnos ON agenda_turnos.id_horario_turno1 = horarios_turnos.id_horario_turno
            INNER JOIN estados_turnos ON agenda_turnos.agenda_estado = estados_turnos.id_estado_turno
            WHERE agenda_fecha = '"
.$_SESSION['fecha_selecionada']."'
            ORDER BY id_horario_turno1 ASC"
;
    }
else
    {
    
$sql "SELECT * FROM agenda_turnos
            INNER JOIN medicos ON agenda_turnos.agenda_medico = medicos.id_medico
            INNER JOIN especialidades ON agenda_turnos.agenda_especialidad = especialidades.id_especialidad
            INNER JOIN pacientes ON agenda_turnos.agenda_paciente = pacientes.id_paciente
            INNER JOIN horarios_turnos ON agenda_turnos.id_horario_turno1 = horarios_turnos.id_horario_turno
            INNER JOIN estados_turnos ON agenda_turnos.agenda_estado = estados_turnos.id_estado_turno
            WHERE agenda_fecha = '"
.$_SESSION['fecha_selecionada']."'
            AND agenda_medico = '"
.$_SESSION['menu_medicos']."'
            ORDER BY id_horario_turno1, agenda_estado ASC"
;
    }
    
$Listado_Turnos mysql_query($sql) or die(mysql_error());
    
$_SESSION['fecha'] = convertir_fecha_calendario ($_SESSION['fecha_selecionada']);
    
    
//Destruimos la sesión para que inicie vacio en los siguientes reportes
    
unset ($_SESSION['menu_medicos']); 

while (
$Turnos mysql_fetch_array($Listado_Turnos)) 
    {
    
$pdf->SetX(10);
    
$pdf->SetFont('Arial','',9);
    
$pdf->Cell(20,7,$Turnos['nro_paciente'],1,0,'C');
    
$pdf->Cell(70,7,$Turnos['nombre']." ".$Turnos['apellido'],1,0,'L');
    
$pdf->Cell(30,7,$Turnos['M_nombre'],1,0,'C');
    
$pdf->Cell(30,7,$Turnos['especialidad_nombre'],1,0,'C');
    
$pdf->Cell(87,7,$Turnos['agenda_motivo'],1,0,'L');
    
$pdf->Cell(15,7,$Turnos['horario_turno'],1,0,'C');
    
$pdf->Cell(25,7,$Turnos['estado_nombre'],1,1,'C');
    } 

//Aquí escribimos lo que deseamos mostrar...
$pdf->Output('Reporte_Turnos_Fecha_'.$_SESSION['fecha'].'.pdf','I');
?>
Verán muchas lineas comentadas, se que ocupan en peso pero we me sirven de guía.

El tema cual es, en donde dice "$pdf->Cell(87,7,$Turnos['agenda_motivo'],1,0,'L');" yo le estoy diciendo que sea una cela de 87 de ancho, 7 de alto, que inserte el contenido de $Turnos['agenda_motivo'], que me dibuje las lineas, que continue en a misma linea y que justifique a la izquierda.

Bueno, eso lo hace hermoso, el problema surge cuando el contenido de $Turnos['agenda_motivo'] es grande, en vez de adaptarse al tamaño de ancho que se le dió a la celda, el contenido sigue en una sola linea y se transcribe arriba de las columnas que le sigen

Subo una imagen en el siguiente post para que vean a que me refiero pero espero puedan darme una idea de que hacer..
Encontré que para esos casos en vez de usar Cell se usa MultiCell, con lo cual hace lo que quiero, pero al mismo tiempo me baja a una nueva fila las siguientes 2 columnas y le pone fondo a la celda
  #2 (permalink)  
Antiguo 20/01/2013, 15:54
 
Fecha de Ingreso: mayo-2011
Ubicación: Córdoba Capital
Mensajes: 15
Antigüedad: 12 años, 11 meses
Puntos: 1
Respuesta: Texto de varias lineas en FPDF

Acá les dejo el link de la imagen...

[URL="http://s2.subirimagenes.com/otros/previo/thump_82498321.jpg"]http://s2.subirimagenes.com/otros/previo/thump_82498321.jpg[/URL]

Etiquetas: fpdf
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 11:12.