crear tabla en pdf con datos de ajuste usando fpdf en php

Tengo un problema para crear una estructura de tabla en pdf usando la biblioteca fpdf. cuando cualquier dato de celda perticular tiene una cadena larga, los datos de celda se superpondrán con otros datos de celda. Así que toda la tabla de datos ha sido desordenada. entonces los datos en pdf no se verán correctamente.

cualquiera, ayúdenme a crear una tabla en pdf, ajuste automáticamente todas las celdas según los datos en la celda.

= '$fromdate' ORDER BY t2.membercardno"); OCIExecute($import); $k=0; while(OCIFetch($import)) { $a[$k]['membercardno'] = ociresult($import,"MEMBERCARDNO"); $a[$k]['fullname'] = ociresult($import,"FULLNAME"); $a[$k]['description'] = ociresult($import,"DESCRIPTION"); $a[$k]['startdate'] = ociresult($import, "STARTDATE"); $a[$k]['expirydate'] = ociresult($import, "EXPIRYDATE"); $a[$k]['ramount'] = ociresult($import, "RAMOUNT"); $a[$k]['address1'] = ociresult($import, "ADDRESS1"); $a[$k]['address2'] = ociresult($import, "ADDRESS2"); $k++; } $resultcount = count($a); elseif($_POST['rdbReportFormat'] == 'pdf') { /***This report view in tabular format.****/ $pdf=new FPDF(); $pdf->AddPage(); $reportdate = date('dm-Y'); $filename = $reportdate.'_report.pdf'; $pdf->SetFillColor(255,0,0); $pdf->SetTextColor(255); $pdf->SetDrawColor(128,0,0); $pdf->SetLineWidth(.3); $pdf->SetFont('Arial', 'B', 6); // Header $header=array('Member Card No','Full Name','Description', 'Start Date', 'Expiry Date', 'ramount', 'Address1', 'Address2'); $w = array(25, 35, 35, 15, 18, 15, 30, 30); for($i=0;$iCell($w[$i],7, $header[$i], 1, 0, 'L', true); $pdf->Ln(); // Reset colour set for data $pdf->SetFillColor(224,235,255); $pdf->SetTextColor(0); $pdf->SetFont('courier','',7); $fill=false; for($i=0;$iCell($w[0], '$height', $a[$i]['membercardno'], '1', '0', 'L', $fill); $pdf->Cell($w[1], '$height', $a[$i]['fullname'], '1', '0', 'L', $fill); $pdf->Cell($w[2], '$height', $a[$i]['description'], '1', '0', 'L', $fill); $pdf->Cell($w[3], '$height', $a[$i]['startdate'], '1', '0', 'L', $fill); $pdf->Cell($w[4], '$height', $a[$i]['expirydate'], '1', '0', 'L', $fill); $pdf->Cell($w[5], '$height', $a[$i]['ramount'], '1', '0', 'L', $fill); $pdf->Cell($w[5], '$height', $a[$i]['address1'], '1', '0', 'L', $fill); $pdf->Cell($w[5], '$height', $a[$i]['address2'], '1', '0', 'L', $fill); $pdf->Ln(); $fill = !$fill; } $pdf->Cell(array_sum($w),0,'','T'); $pdf->Output($filename, 'I'); } } ?> 

Intente escribir campos de problemas (es decir, descripciones – para las que no puede predecir una longitud máxima) usando multicell (). Esto los envolverá en múltiples líneas.

Para cada campo multicell, necesitará usar nbLines para ver si se va a ajustar y calcular la siguiente posición de línea. también necesitará hacer un setXY () para establecer el inicio de la siguiente celda.

Aquí está nbLines (se encuentra aquí: http://www.svn.churchtool.org/viewvc/trunk/fpdf/mc_table.php?revision=1&view=markup ):

 function NbLines($w,$txt) { //Computes the number of lines a MultiCell of width w will take $cw=&$this->CurrentFont['cw']; if($w==0) $w=$this->w-$this->rMargin-$this->x; $wmax=($w-2*$this->cMargin)*1000/$this->FontSize; $s=str_replace("\r",'',$txt); $nb=strlen($s); if($nb>0 and $s[$nb-1]=="\n") $nb--; $sep=-1; $i=0; $j=0; $l=0; $nl=1; while($i<$nb) { $c=$s[$i]; if($c=="\n") { $i++; $sep=-1; $j=$i; $l=0; $nl++; continue; } if($c==' ') $sep=$i; $l+=$cw[$c]; if($l>$wmax) { if($sep==-1) { if($i==$j) $i++; } else $i=$sep+1; $sep=-1; $j=$i; $l=0; $nl++; } else $i++; } return $nl; }