HTML Tabelle in PDF ausgeben

smyle

Erfahrenes Mitglied
Hallo, ich habe ein kleines Problem. ich möchte eine bestimmte, mit HTML und PHP erstellte Tabelle in einem PDF ausgeben.

Momentan habe ich folgender Code:
PHP:
require('lib/fpdf.php');

$inhalt = "<table align='center' border='1'>
			  <tr align='center'>
				<td bordercolor='#000000' bgcolor='#009900' width='525' height='175'> $text, $text11 Inhalt $image</td>
				  </tr>
			</table>";

$pdf=new FPDF();
$pdf->AddPage();
$pdf->SetFont('Arial','B',16);
$pdf->Cell(40,10, $inhalt);
$pdf->Output();
Jedoch wird meine Tabelle als Text angezeigt und nicht als Code. Weis jemand wie man das macht?
 
Hmm.. Ok danke, ich werde es mal mit dieser Seiter versuchen. Bei Probleme werde ich mich ansonsten melden.
Grüsse Smyle :D
 
Also, ich habe mal versucht den Code zu verstehen und ihn für mich umzuschreiben.
Leider konnte ich diesen Code, mit meinen Wenigen PHP- und englisch- Kenntnisse nicht verstehen.
Kannst du oder jemand anders mir da helfen?

PHP:
define('FPDF_FontPATH','lib/font/');
require('lib/fpdf.php');

class PDF extends FPDF
{
	//Load data
	function LoadData($file)						//Benötige ich eigentlich garnicht, da ich keine Datei habe, sondernd variabeln
	{
		//Read file lines
		$lines=file($file);
		$data=array();
		foreach($lines as $line)
			$data[]=explode(';',chop($line));
		return $data;
	}

	//Simple table
	function BasicTable($data)
	{
		//Data
		foreach($data as $row)
		{
			foreach($row as $col)
				$this->Cell(40,6,$col,1);
			$this->Ln();
		}
	}
	//Better table
	function ImprovedTable($data)
	{
		//Column widths
		$w=array(40,35,40,45);							//Das sind warscheinlich nicht Pixel? wie muss ich die Breite beiner Tabelle hier angeben?
		
		
		//Data
		foreach($data as $row)							//?
		{
			$this->Cell($w[0],6,$row[0],'LR');
			$this->Cell($w[1],6,$row[1],'LR');
			$this->Cell($w[2],6,number_format($row[2]),'LR',0,'R');
			$this->Cell($w[3],6,number_format($row[3]),'LR',0,'R');
			$this->Ln();
		}
		
		//Closure line
		$this->Cell(array_sum($w),0,'','T');
	}

	//Colored table
	function FancyTable($data)
	{
		//Colors, line width and bold font
		$this->SetFillColor(255,0,0);
		$this->SetTextColor(255);
		$this->SetDrawColor(128,0,0);								//Wie muss ich die höhe und die Länge angeben (Für was steht .3, denn ich hatte es zu .6 umgeschrieben und es ist nichts passiert)?
		$this->SetLineWidth(.3);
		$this->SetFont('','B');

		
		//Color and font restoration								//Da die Tabelle weiss ist, kann man das so lassen
		$this->SetFillColor(224,235,255);					
		$this->SetTextColor(0);
		$this->SetFont('');
		
		//Data														//?
		$fill=0;
		foreach($data as $row)
		{
			$this->Cell($w[0],6,$row[0],'LR',0,'L',$fill);
			$this->Cell($w[1],6,$row[1],'LR',0,'L',$fill);
			$this->Cell($w[2],6,number_format($row[2]),'LR',0,'R',$fill);
			$this->Cell($w[3],6,number_format($row[3]),'LR',0,'R',$fill);
			$this->Ln();
			$fill=!$fill;
		}
		//$this->Cell(array_sum($w),0,'','T');
	}

}

$LatName = "Tuber aestivum";				//Bold
$FrName = "Truffe d'été";					//Bold
$DeName = "Sommer Trüffel";					//Bold
$nr="C COUR 43";							//Normal
$logo = "<img src='Bilder/Test.jpg'>";		//Bei manchen kommt das logo oben Rechts (Wie im Anhang)
$bg = "<img src='Bilder/Hintergrundbild'>"; //Bei manchen kommt ein Hintergrundbild für die Tabelle verwendet 

$pdf=new PDF();


//Data loading
$data=$pdf->LoadData('Data.txt');			//Hier muss ich keine Datei lade (Die funktion wird auch nicht benötigt) jedoch muss ich die oberen Variabeln als inhalt anzeigen /erkennen lassen.

$pdf->SetFont('Arial','',14);
$pdf->AddPage();
$pdf->BasicTable($data);			//header wird nicht benötigt
$pdf->AddPage();
$pdf->ImprovedTable($data);			//header wird nicht benötigt
$pdf->AddPage();
$pdf->FancyTable($data);			//header wird nicht benötigt
$pdf->Output();

Ich habe Zu den verschiedenen Codeteilien Kommentare geschreiben.
Wichtig ist, die Variabeln $LatName, $FrName, $DeName, $nr, $logo und $bg sind die die in der Tabelle angezeigt werden müssen.
Ich habe euch als Beispiel eine solche PDF Datei hochgeladen.

Vielen Dank im voraus für die Hilfe. Ich weis das ist mühsam und voralemm bei einem solchen schwirigen Code.

:D
 

Anhänge

Zuletzt bearbeitet:
Hallo ich habe eine Kurze Frage zu FPDF.

-Und zwar lese ich aus einer DB ein bestimmter Text aus.
Mit dem Befehl "MultiCell" kann ich den Text ein dem Richtigen Ort anzeigen lassen.
Da der Text für die Zelle zu lange ist, muss ich "MultiCell" verwenden, da dieser Befehl automatisch einen Zeilenumbruch erstellt.
Nun habe ich jedoch nach dem MultiCell Befehl noch weitere Zellen.
Diese werde leider auf einer zeuen Zeile angezeigt und nicht auf der selben wie der geladene Text aus der DB.

Wie kann ich das Problem lösen?

Hier der Codebereich:
PHP:
				$this->Ln(4);
				$this->SetFont('Arial','',9);
				$this->Cell($w[0],$h[1],"",0,0,'L',0,0);
				
				$this->SetFont('Arial','',6);
				$this->MultiCell( $w[3],$h[0], "$row->Text", '0', 'L', 0); //HIER DEN MULTICELL BEREICH

				$this->SetFont('ZapfDingbats');
				$this->Cell($w[0],$h[1], chr(111),0,0,'C',0,0);   //UND HIER DEN BEREICH MIT DEN WEITEREN ZELLEN
				$this->Cell($w[0],$h[1], chr(111),0,0,'C',0,0);
				$this->Cell($w[0],$h[1], chr(111),0,0,'C',0,0);
				$this->Cell($w[0],$h[1], chr(111),0,0,'C',0,0);
				$this->Cell($w[0],$h[1], chr(111),0,0,'C',0,0);
				$this->Cell($w[0],$h[1], chr(111),0,0,'C',0,0);
				
				$this->Ln(4);


-Dann habe ich noch eine andere kleine Frage.
Und zwar ... wenn ich einen Text in einer Zelle habe welche 10 gross ist, wie kann ich hinterlegen das der Text im oberen Bereich der Zelle angezeigt wird?
PHP:
$this->Cell($w[3],$h[2],"$begründung",'0',0,'C',0,0); //HIER MUSS MAN IRGENDWIE NOCH ERWÄHNEN DAS DER TEXT IN DER OBERENHÄLFTE DER ZELLE GELADEN WERDEN MUSS

-Und die dritte Frage lautet:
Wie kann ich beim Cell die obere Linie gestrichelt machen. Denn Standard ist sie durchgezogen.


Hoffe es kann mir jemand helfen und schnell eine Antwort geben.
Vielen Dank im Voraus
 
Zuletzt bearbeitet:
Zurück