Tabelle in PDF schreiben

Fragen zu allen Themen rund ums Programmieren außerhalb von phpBB können hier gestellt werden - auch zu anderen Programmiersprachen oder Software wie Webservern und Editoren.
Antworten
thunderblade
Mitglied
Beiträge: 37
Registriert: 10.06.2003 13:10
Wohnort: Bückeburg
Kontaktdaten:

Tabelle in PDF schreiben

Beitrag von thunderblade »

so,
dies hier ist die Ausgangssituation:
Datenbank mit Mitgledsdaten
Formular um eine Meldung für einen Wettkampf zu erstellen

Damit kann ich nun wunderbar eine Seite ausgeben lassen, die die Meldung dann darstellt - aber

folgendes Problem stellt sich mir jetzt gerade:

Ich möchte gerne das diese Meldung nicht in einer HTML/php-Datei steht, sondern in ein pdf-file geschrieben wird. Soweit kein Problem ( pdf_open()... ), aber einige Daten lassen sich einfach besser in einer Tabelle darstellen, wie kann ich das realisieren? (natürlich mit php ;-) )

thx schonmal für Hilfe (wahrscheinlich fällt mir nur die einfachste Lösung wiedermal nicht ein)
bye Markus
Wer ein Problem definiert, hat es schon halb gelöst.
Signaturen dürfen maximal 3 Zeilen lang sein
Benutzeravatar
King Crusty
Mitglied
Beiträge: 209
Registriert: 20.04.2002 11:58
Wohnort: Deggendorf - Altötting
Kontaktdaten:

Beitrag von King Crusty »

Code: Alles auswählen

<?php
define('FPDF_FONTPATH','font/');
require('fpdf.php');

class PDF extends FPDF
{
//Load data
function LoadData($file)
{
    //Read file lines
    $lines=file($file);
    $data=array();
    foreach($lines as $line)
        $data[]=explode(';',chop($line));
    return $data;
}

//Simple table
function BasicTable($header,$data)
{
    //Header
    foreach($header as $col)
        $this->Cell(40,7,$col,1);
    $this->Ln();
    //Data
    foreach($data as $row)
    {
        foreach($row as $col)
            $this->Cell(40,6,$col,1);
        $this->Ln();
    }
}

//Better table
function ImprovedTable($header,$data)
{
    //Column widths
    $w=array(40,35,40,45);
    //Header
    for($i=0;$i<count($header);$i++)
        $this->Cell($w[$i],7,$header[$i],1,0,'C');
    $this->Ln();
    //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($header,$data)
{
    //Colors, line width and bold font
    $this->SetFillColor(255,0,0);
    $this->SetTextColor(255);
    $this->SetDrawColor(128,0,0);
    $this->SetLineWidth(.3);
    $this->SetFont('','B');
    //Header
    $w=array(40,35,40,45);
    for($i=0;$i<count($header);$i++)
        $this->Cell($w[$i],7,$header[$i],1,0,'C',1);
    $this->Ln();
    //Color and font restoration
    $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');
}
}

$pdf=new PDF();
$pdf->Open();
//Column titles
$header=array('Country','Capital','Area (sq km)','Pop. (thousands)');
//Data loading
$data=$pdf->LoadData('countries.txt');
$pdf->SetFont('Arial','',14);
$pdf->AddPage();
$pdf->BasicTable($header,$data);
$pdf->AddPage();
$pdf->ImprovedTable($header,$data);
$pdf->AddPage();
$pdf->FancyTable($header,$data);
$pdf->Output();
?> 
Die Datei (wird am Anfang eingebunden) fpdf.php findest du unter:
http://www.fpdf.org/
thunderblade
Mitglied
Beiträge: 37
Registriert: 10.06.2003 13:10
Wohnort: Bückeburg
Kontaktdaten:

Beitrag von thunderblade »

okay,
danke - fpdf-Variante kannte ich, ich hatte nur irgendwie "gehofft", dass es noch eine Variante ohne zusätzliche Klasse gibt.
bye Markus
Wer ein Problem definiert, hat es schon halb gelöst.
Signaturen dürfen maximal 3 Zeilen lang sein
Benutzeravatar
King Crusty
Mitglied
Beiträge: 209
Registriert: 20.04.2002 11:58
Wohnort: Deggendorf - Altötting
Kontaktdaten:

Beitrag von King Crusty »

mag sein :lol: aber was stört dich an dieser Variante - OOP ist doch praktisch...
thunderblade
Mitglied
Beiträge: 37
Registriert: 10.06.2003 13:10
Wohnort: Bückeburg
Kontaktdaten:

Beitrag von thunderblade »

stört mich nix dran, aber wie heisst es sos chön in dem Werbespot einer Möbelkette?
Entdecke die Möglichkeiten
;-)
bye Markus
Wer ein Problem definiert, hat es schon halb gelöst.
Signaturen dürfen maximal 3 Zeilen lang sein
Antworten

Zurück zu „Coding & Technik“