[FPDF] Seitenzahlen erstellen

Tab

unlimited
ID: 374854
L
26 Juni 2007
900
71
Hallo ihr Lieben,

ich würde in der PDF Datei gerne die Seitenzahlen ausgeben, leider finde ich keine funktionierende Lösung.

Mit diesem Script soll es möglich sein, funktioniert leider nicht. Habe halt nur die Funktion Footer rauskopiert.Desweiteren würde mich interessieren, ob es möglich ist, eine PDF Datei selber anzulegen und zu beschriften. Bedeutet die Hälfte der ersten Seite wird von mir selber eingetragen dann ins Verzeichnis gegeben. Wenn ich dann in die PDF schreibe, dann gehen die Werte auch erst ab der Hälfte los?

Liebe Grüße,
Tab
 
Mit diesem Script soll es möglich sein, funktioniert leider nicht. Habe halt nur die Funktion Footer rauskopiert.
Wild irgendwo Code rauskopieren, ohne ihn zu verstehen, funktioniert freilich nicht :LOL:

:rtfm: Footer() ist ein Callback, d.h. er funktioniert nur, wenn du FPDF ableitest und die Methode implementierst. Die Oberklasse ruft sie zum geeigneten Moment dann auf.
Desweiteren würde mich interessieren, ob es möglich ist, eine PDF Datei selber anzulegen und zu beschriften. Bedeutet die Hälfte der ersten Seite wird von mir selber eingetragen dann ins Verzeichnis gegeben. Wenn ich dann in die PDF schreibe, dann gehen die Werte auch erst ab der Hälfte los?
Versteh ich zwar nicht, aber vermutlich wird es möglich sein :mrgreen:
 
Ich verstehe nicht, wieso diese Funktion nicht ausgeführt wird. Es ist angegeben, dass diese automatisch startet, was sie jedoch nicht tut?

Liebe Grüße,
Tab
 
Hast du überhaupt das Konzept von OOP verstanden?
 
Hast du überhaupt das Konzept von OOP verstanden?
Woha, ruhig Brauner.

Tab:
Worum es geht: Du sagst, du hast die Funktion kopiert. Ich (bzw. sagen wir mal wir) nehmen an, dass du sie einfach rauskopiert hast, und keine eigene Klasse erstellt hast, die das erstellen von PDFs für dich verwaltet, stimmt das so?
Und egal ob ja oder nein, poste doch einfach mal den entsprechenden Teil deines Quelltextes.

Und bezüglich deiner zweiten Frage hab ich grad nur ein "wtf" im Kopf. Ich hab keine Ahnung was du überhaupt willst.
 
Was viele vergessen:

PHP:
//Pfad für Schriftarten festlegen
define('FPDF_FONTPATH','...fpdf_classes/font/');

Meine Methode funktioniert:

PHP:
public function Footer()
    {
        //Oberkante festlegen
        $this->SetY(-10);

        //Kleine Schrift für Fußzeile
        $this->SetFont('Arial','',8);
        //Standardplatzhalter für Seitenzahl
        $this->AliasNbPages();
        //Ausgabe Seitenzahl
        $this->Cell(170,20,$this->PageNo().'/{nb}','T',0,'C'); //{nb}=Gesamtzahl der Seiten
 
Ich habe nun diesen Bereich in die PHP Datei reingeschrieben:

PHP:
//Pfad für Schriftarten festlegen
define('FPDF_FONTPATH','font/');

class myPDF extends FPDF 
{ 
    public function Footer()
    {
        //Oberkante festlegen
        $this->SetY(-10);

        //Kleine Schrift für Fußzeile
        $this->SetFont('Arial','',8);
        //Standardplatzhalter für Seitenzahl
        $this->AliasNbPages();
        //Ausgabe Seitenzahl
        $this->Cell(170,20,$this->PageNo().'/{nb}','T',0,'C'); //{nb}=Gesamtzahl der Seiten 
    }
}

Ich entnehme den Beschreibungen der FPDF Seiten, dass der Footer automatisch erstellt wird. Geschieht aber nicht. Theoretisch müsste ich nun die Klasse mit der Funktion footer() ausgeben?

Liebe Grüße,
Tab
 
Du musst erst ein Objekt erzeugen:

PHP:
//Objekt der eigenen Klasse erzeugen
$pdf=new MyFpdf('text.txt');  //inhalt als textdatei
$pdf->AddPage();
$pdf->PrintFile();
$pdf->Output();
 
Einzige mögliche Fehlerquelle die mir gerade einfällt:
Beim Initialisieren der Klasse - hast du da drauf geachtet myPDF zu initialisieren statt FPDF?
 
Ich kopiere hier mal den ganzen Code herein.

PHP:
//Pfad für Schriftarten festlegen
define('FPDF_FONTPATH','font/');

class myPDF extends FPDF 
{ 
    public function Footer()
    {
        //Oberkante festlegen
        $this->SetY(-10);

        //Kleine Schrift für Fußzeile
        $this->SetFont('Arial','',8);
        //Standardplatzhalter für Seitenzahl
        $this->AliasNbPages();
        //Ausgabe Seitenzahl
        $this->Cell(170,20,$this->PageNo().'/{nb}','T',0,'C'); //{nb}=Gesamtzahl der Seiten 
    }
} 


$pdf = new FPDF();
$pdf->AliasNbPages();
$pdf->AddPage();

$pdf->SetFont("Helvetica", "B", 12);
$pdf->Cell(0, 10, "Onlineshop (Lagerliste)", 0, 1);

$pdf->SetFont("Helvetica", "B", 7);
$pdf->Cell(0, 4, "Shopname", 0, 1);
$pdf->Cell(0, 4, "Straße und Nummer", 0, 1);
$pdf->Cell(0, 4, "PLZ und Ort", 0, 1);
$pdf->Ln();

/* Einstellung für Überschrift */
$pdf->SetFont("Helvetica", "B", 7);
$pdf->SetLineWidth(0.2);
$pdf->SetDrawColor(0, 0, 0);
$pdf->SetFillColor(0, 0, 0);
$pdf->SetTextColor(255, 255, 255);

/* Überschrift */
$pdf->Cell(30, 5, "Art. Nr.", "LTR", 0, "L", 1);
$pdf->Cell(80, 5, "Artikelname", "LTR", 0, "L", 1);
$pdf->Cell(15, 5, "Preis", "LTR", 0, "L", 1);
$pdf->Cell(15, 5, "Anzahl", "LTR", 0, "L", 1);
$pdf->Cell(50, 5, "Zustand", "LTR", 0, "L", 1);
$pdf->Ln();

/* Einstellung für Tabelle */
$pdf->SetFont("", "");
$pdf->SetLineWidth(0.2);
$pdf->SetDrawColor(247, 247, 250);

/* Tabelle */

    

while($row = mysql_fetch_object($mysql_query))
  {
      
      $i++;
      if ($i % 2 == 0){
          $color = "";
      } else {
          $color = "#F7F8FA";
      }
      
      
  if($i % 2 == 0)
  {
    $pdf->SetFillColor(247, 247, 250);
    $pdf->SetTextColor(0, 0, 0);
  }
  else
  {
    $pdf->SetFillColor(255, 255, 255);
    $pdf->SetTextColor(0, 0, 0);
  }
      
        /* Werte */
  //$wb = $w / 180 * M_PI;
  $pdf->Cell(30, 5, $row->products_model, "LTRB", 0, "L", 1);
  $pdf->Cell(80, 5, $row->products_name, "LTRB", 0, "L", 1);
  $pdf->Cell(15, 5, number_format($row->products_price, 2, ',','.')." €"."", "LTRB", 0, "R", 1);
  $pdf->Cell(15, 5, $row->products_quantity, "LTRB", 0, "R", 1);
  $pdf->Cell(50, 5, $row->products_options_values_name, "LTRB", 0, "L", 1);
  $pdf->Ln();
    
?>      
    <tr style="background: <?php echo $color; ?>;">
        <td><?php echo $row->products_model; ?></td>
        <td><?php echo $row->products_name; ?></td>
        <td align="right"><?php echo number_format($row->products_price, 2, ',','.') ?> €</td>
        <td align="right"><?php echo $row->products_quantity; ?></td>
        <!--<td><?php echo $row->manufacturers_name; ?></td>-->
        <td><?php echo $row->products_options_values_name; ?></td>
    </tr>

<?php 

  }
 $pdf->Output("lagerliste.pdf");
 
Wie ich sagte:


//Pfad für Schriftarten festlegen
define('FPDF_FONTPATH','font/');

class myPDF extends FPDF
{
public function Footer()
{
//Oberkante festlegen
$this->SetY(-10);

//Kleine Schrift für Fußzeile
$this->SetFont('Arial','',8);
//Standardplatzhalter für Seitenzahl
$this->AliasNbPages();
//Ausgabe Seitenzahl
$this->Cell(170,20,$this->PageNo().'/{nb}','T',0,'C'); //{nb}=Gesamtzahl der Seiten
}
}


$pdf = new myPDF(); // du initialisierst FPDF, das nutzt dir doch nichts
$pdf->AliasNbPages();
$pdf->AddPage();

$pdf->SetFont("Helvetica", "B", 12);
$pdf->Cell(0, 10, "Onlineshop (Lagerliste)", 0, 1);

$pdf->SetFont("Helvetica", "B", 7);
$pdf->Cell(0, 4, "Shopname", 0, 1);
$pdf->Cell(0, 4, "Straße und Nummer", 0, 1);
$pdf->Cell(0, 4, "PLZ und Ort", 0, 1);
$pdf->Ln();

/* Einstellung für Überschrift */
$pdf->SetFont("Helvetica", "B", 7);
$pdf->SetLineWidth(0.2);
$pdf->SetDrawColor(0, 0, 0);
$pdf->SetFillColor(0, 0, 0);
$pdf->SetTextColor(255, 255, 255);

/* Überschrift */
$pdf->Cell(30, 5, "Art. Nr.", "LTR", 0, "L", 1);
$pdf->Cell(80, 5, "Artikelname", "LTR", 0, "L", 1);
$pdf->Cell(15, 5, "Preis", "LTR", 0, "L", 1);
$pdf->Cell(15, 5, "Anzahl", "LTR", 0, "L", 1);
$pdf->Cell(50, 5, "Zustand", "LTR", 0, "L", 1);
$pdf->Ln();

/* Einstellung für Tabelle */
$pdf->SetFont("", "");
$pdf->SetLineWidth(0.2);
$pdf->SetDrawColor(247, 247, 250);

/* Tabelle */



while($row = mysql_fetch_object($mysql_query))
{

$i++;
if ($i % 2 == 0){
$color = "";
} else {
$color = "#F7F8FA";
}


if($i % 2 == 0)
{
$pdf->SetFillColor(247, 247, 250);
$pdf->SetTextColor(0, 0, 0);
}
else
{
$pdf->SetFillColor(255, 255, 255);
$pdf->SetTextColor(0, 0, 0);
}

/* Werte */
//$wb = $w / 180 * M_PI;
$pdf->Cell(30, 5, $row->products_model, "LTRB", 0, "L", 1);
$pdf->Cell(80, 5, $row->products_name, "LTRB", 0, "L", 1);
$pdf->Cell(15, 5, number_format($row->products_price, 2, ',','.')." €"."", "LTRB", 0, "R", 1);
$pdf->Cell(15, 5, $row->products_quantity, "LTRB", 0, "R", 1);
$pdf->Cell(50, 5, $row->products_options_values_name, "LTRB", 0, "L", 1);
$pdf->Ln();

?>
<tr style="background: <?php echo $color; ?>;">
<td><?php echo $row->products_model; ?></td>
<td><?php echo $row->products_name; ?></td>
<td align="right"><?php echo number_format($row->products_price, 2, ',','.') ?> €</td>
<td align="right"><?php echo $row->products_quantity; ?></td>
<!--<td><?php echo $row->manufacturers_name; ?></td>-->
<td><?php echo $row->products_options_values_name; ?></td>
</tr>

<?php

}
$pdf->Output("lagerliste.pdf");
 
Zuletzt bearbeitet:
PHP:
//Klasse einbinden
require_once('lib/fpdf.php');
Fehlt, oder? ^^

Achso sorry. Die Klasse FPDF habe ich ganz oben eingebunden. Habe ich vergessen reinzukopieren. Die ist auf jeden Fall vorhanden. Trotzdem vielen Dank.

@Astrodan Hier verstehe ich nicht was ich ändern soll. Soll ich nun dort wo FPDF steht myPDF reinschreiben? Habe ich ausporbiert. Bekomme dann eine Fehlermeldung.

Liebe Grüße
 
@Astrodan Hier verstehe ich nicht was ich ändern soll. Soll ich nun dort wo FPDF steht myPDF reinschreiben? Habe ich ausporbiert. Bekomme dann eine Fehlermeldung.

Ja sollst du. Und wenn du einen Fehler kriegst solltest du auch schreiben was die Fehlermeldung ist.
(Btw., Memo für dich: Bei Fragen zu einen Skript brauchen wir mind. Code + Fehler wenn wir wirklich helfen sollen...)
 
DU musst die Klasse schon richtig vererben.

PHP:
class myFpdf extends fpdf

Deine Klasse "MyFdpf erbt von "fpdf, die du mit require_once einholst.
 
Fatal error: Class 'myPDF' not found in /home/www/doc/6992/seitenname.de/www/produkt.php on line 53
Damit ist folgende Zeile gemeint. In dieser habe ich anstatt FPDF myPDF hingeschrieben.

class myPDF extends myPDF
Verstehe eh nicht wieso myPDF. Irgendwie muss die Klasse doch ausgeführt werden?

Liebe Grüße,
Tab

EDIT: Bei der Methode von astralgestalt wird kein Fehler ausgegeben, aber im Footer wird auch kein Inhalt angezeigt?
 
Eigentlich müsste doch nur bei dem hier geposteten Code das "new FPDF();" durch "new myFPDF();" ersetzt werden oder nicht?
 
Ach verflucht.

@tleilax: Klar muss das. Exakt das wollte ich machen, und hab dann nach dem ersten Vorkommen von FPDF gesucht und das ersetzt -.-
Ich korrigiers mal schnell oben

Edit: Done
 
Nun unktioniert es. Vielen Dank.
Ist zwar noch ein bisschen verschoben, aber das kann man ja noch ändern.

Liebe Grüße,
Tab