2016-07-23 17 views
0

Ich habe versucht, ein Array von Daten in einer Tabelle in fpdf zu drucken. Dies ist das Tutorial Ich war folgende: http://www.fpdf.org/en/tutorial/tuto5.htmFPDF -PHP - Aufruf an undefinierte Methode

Außer es sagt immer wieder:

Fatal error: Uncaught Error: Call to undefined method FPDF::FancyTable() in ...

Ich habe viele andere Fragen wie diese gesehen, aber keiner von ihnen sind Befestigungs mir.

Ich denke, das sollte eine wirklich einfache Lösung sein und ich mache etwas dummes.

Jede Hilfe würde sehr geschätzt werden.

<?php 
require('../fpdf/fpdf.php'); 

class PDF extends FPDF 
{ 
    // 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',true); 
    $this->Ln(); 
    // Color and font restoration 
    $this->SetFillColor(224,235,255); 
    $this->SetTextColor(0); 
    $this->SetFont(''); 
    // Data 
    $fill = false; 
    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; 
    } 
    // Closing line 
    $this->Cell(array_sum($w),0,'','T'); 
} 
} 

$csv = array(); 

$lines = file('../data/StaffData.csv', FILE_IGNORE_NEW_LINES); 

foreach ($lines as $key => $value) 
{ 
    $csv[$key] = str_getcsv($value); 
} 

$pdf = new FPDF(); 

// Column headings 
$header = array('Country', 'Capital', 'Area (sq km)', 'Pop. '); 
$data = $csv; 
$pdf->AddPage(); 

$pdf->FancyTable($header,$data); 
$pdf->Output(); 

?> 

** UPDATE **
-Danke für die Hilfe. Ich habe die Schriftart geändert und keinen Unterschied gemacht. Habe ich es aus:

$this->SetFont('','B'); 

zu

$this->SetFont('Arial','',14); 

(In der Phantasie Tabellenfunktion)

Aber es kommt mit jeder Menge dieser Fehler auf:

Warning: number_format() expects parameter 1 to be float, string given in /Applications/XAMPP/xamppfiles...

Notice: A non well formed numeric value encountered in /Applications/XAMPP/xamppfiles...

Fatal error: Uncaught Exception: FPDF error: Some data has already been output, can't send PDF file in /Applications/XAMPP/xamppfiles...

I‘ Tut mir leid, aber ich weiß nicht wirklich was ich tun soll.

Ich habe jedoch einige der Tabelle angezeigt, indem Sie die Zeilen mit number_format entfernen. I.E Ich habe diese zwei Zeilen entfernt:

$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); 

Warum? Es zeigt die ersten zwei Spalten, aber nicht den Rest.

+0

Der Fehler ändern müssen, ist Ihnen zu sagen, dass '$ row [2]' und '$ row [3]' sind Zeichenfolgen und keine Zahlen, so dass Sie 'number_format' nicht verwenden können, wenn Sie sie nicht zuerst aus einer Zeichenfolge konvertieren. – hcoat

+0

Oh ok. Ich echote sie und die Zeilen enthalten alle Daten in einer Zeichenfolge. Wie würde ich die Strings in Zahlen umwandeln? Es schien in Ordnung zu sein, nachdem das number_format entfernt und die Zeile verlassen wurde. Danke für Ihre Hilfe hcoat. Ich werde die Antwort trotzdem akzeptieren. :-) –

Antwort

1

Ihre PDF-Klasse erweitert FPDF, so dass Sie

$pdf = new FPDF(); 

zu

$pdf = new PDF(); 
+0

Hallo, danke für die Antwort. Das war eine der Antworten in einer sehr ähnlichen Frage. Aber sobald ich das ändere, kommt es mit "Fataler Fehler: Uncaught Exception: FPDF Fehler: Undefinierte Schriftart: B in/Anwendungen/XAMPP/Xamppfiles/htdocs ..." –

+0

In der Datei fpdf.php heißt es: Klasse FPDF und seine Version: 1.81 Nicht sicher, ob das irgendetwas bedeutet. Irgendeine Idee? Vielen Dank –

+0

FPDF kann keine Systemschriftarten verwenden und verwendet nur Schriftarten im FPDF-Schriftartenordner. Es wird mit einigen Standardschriftarten geliefert, aber Sie müssen alle anderen Schriftarten, die Sie verwenden möchten, konvertieren und in den Schriftartenordner stellen. – hcoat