PHP:¿Como desplegar Texto en varias columnas(parametrizable), justificado, con FPDF sin librerías extras
De Foros del Web
El problema surge cuando uno desea imprimir un texto en PDF en varias columnas y justificado con la ayuda de FPDF, ya que no existe la funcionalidad de crear varias columnas y justificarlas, para eso se puede utilizar la siguiente función:
//******************************************************************************************* //******************************************************************************************* //******************************************************************************************* // César Ríos Granados - México 10/01/2012 // infected_artillery@hotmail.com // // Parámetros: Cadena original, Numero de columnas a imprimir la cadena, Variable del FPDF para imprimir devuelta function textIntoCols($strOriginal,$noCols,$pdf) { $iAlturaRow = 4; //Altura entre renglones $iMaxCharRow = 190; //Número máximo de caracteres por renglón $iSizeMultiCell = $iMaxCharRow / $noCols; //Tamaño ancho para la columna $iTotalCharMax = 9957; //Número máximo de caracteres por página $iCharPerCol = $iTotalCharMax / $noCols; //Caracteres por Columna $iCharPerCol = $iCharPerCol - 290; //Ajustamos el tamaño aproximado real del número de caracteres por columna $iLenghtStrOriginal = strlen($strOriginal); //Tamaño de la cadena original $iPosStr = 0; // Variable de la posición para la extracción de la cadena. // get current X and Y $start_x = $pdf->GetX(); //Posición Actual eje X $start_y = $pdf->GetY(); //Posición Actual eje Y $cont = 0; while($iLenghtStrOriginal > $iPosStr) // Mientras la posición sea menor al tamaño total de la cadena entonces imprime { $strCur = substr($strOriginal,$iPosStr,$iCharPerCol);//Obtener la cadena actual a pintar if($cont != 0) //Evaluamos que no sea la primera columna { // seteamos a X y Y, siendo el nuevo valor para X // el largo de la multicelda por el número de la columna actual, // más 10 que sumamos de separación entre multiceldas $pdf->SetXY(($iSizeMultiCell*$cont)+10,$start_y); //Calculamos donde iniciará la siguiente columna } $pdf->MultiCell($iSizeMultiCell,$iAlturaRow,$strCur); //Pintamos la multicelda actual $iPosStr = $iPosStr + $iCharPerCol; //Posicion actual de inicio para extracción de la cadena $cont++; //Para el control de las columnas } return $pdf; } //******************************************************************************************* //******************************************************************************************* //*******************************************************************************************
y se manda a llamar de la siguiente manera:
//........ $Apriv = 'dsadsadasdsaddsadsadasdsaddsadsadasdsaddsadsadasdsaddsadsadasdsaddsadsadasdsaddsadsadasdsaddsadsadasdsaddsadsadasdsaddsadsadasdsad'; // se pasa como parametros la variable con el texto, el número de columnas deseado y la variable con la que imprimes el pdf textIntoCols($Apriv,3,$pdf); //....... $pdf->Output();
-- totobycrg 11 Enero 2012
No tengo como dejarles un ejemplo ahorita, pero ya subire uno en cuanto pueda =)
Este artículo es parte de las FAQs de PHP y el Manual de PHP.
- Indice de las FAQs: Conceptos, Configuración, Formularios, Manejo de Archivos, Integración con Bases de Datos, Sesiones, Extensiones y Librerías, Seguridad, Funciones, Clases y Objetos, Frameworks
- Recomendamos también: Guía Zend, Frameworks PHP, Aceleradores PHP
- Agregar al FAQ: PHP: Instrucciones para agregar una pregunta al FAQ de PHP
- Para preguntas sobre PHP: Foro de Php
