Ankündigung

Einklappen
Keine Ankündigung bisher.

TCPDF - Seitenzahl anpassen

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • TCPDF - Seitenzahl anpassen

    Hallo,

    ich habe ein PDF mit TCPDF[1] erstellt und dort auch Seitenzahlen (Seite x von y) eingeführt. Das Problem ist, dass ich gern mit Seite 5 anfangen möchte und zu der maximalen Anzahl der Seiten 7 dazu addieren möchte. Sprich anstelle

    Seite 1: Seite 1 von 7
    Seite 7: Seite 7 von 7

    möchte ich:

    Seite 1: Seite 6 von 19
    Seite 7: Seite 12 von 19

    Ich habe mir mal die Funktionen angeschaut, aber ich verstehe nicht so ganz wie er das gelöst hat. Währe super, wenn mir jemand helfen könnte.

    Gruß,
    ne0n


    ---
    [1] http://www.tecnick.com/public/code/c...aiocp_dp=tcpdf

  • #2
    Die Dokumentation der Klasse und Anwendungsbeispiele findest du hier:
    http://www.tecnick.com/public/code/c...tcpdf_examples
    [PHP]if ($var != 0) {
    $var = 0;
    }[/PHP]

    Kommentar


    • #3
      Ja die kenne ich, aber da gibt es kein Beispiel was mein Problem betrifft. Dort gibt es nur ein Beispiel mit Seitengruppen, aber auch diese zählen ganz normal.

      Kommentar


      • #4
        Dann musst du hier mal den PHP-Code posten, der die Seitenzahlen erzeugt. Die Klasse wird wohl kaum jemand für dich analysieren.
        [PHP]if ($var != 0) {
        $var = 0;
        }[/PHP]

        Kommentar


        • #5
          Zitat von ne0n Beitrag anzeigen
          Hallo,

          ich habe ein PDF mit TCPDF[1] erstellt und dort auch Seitenzahlen (Seite x von y) eingeführt. Das Problem ist, dass ich gern mit Seite 5 anfangen möchte und zu der maximalen Anzahl der Seiten 7 dazu addieren möchte. Sprich anstelle

          Seite 1: Seite 1 von 7
          Seite 7: Seite 7 von 7

          möchte ich:

          Seite 1: Seite 6 von 19
          Seite 7: Seite 12 von 19

          Ich habe mir mal die Funktionen angeschaut, aber ich verstehe nicht so ganz wie er das gelöst hat. Währe super, wenn mir jemand helfen könnte.

          Gruß,
          ne0n


          ---
          [1] http://www.tecnick.com/public/code/c...aiocp_dp=tcpdf
          Was ist denn daran so schwer .. wenn ich mal aus dem 3ten Beispiel (Custom Header+Footer) zitieren darf :

          PHP-Code:
           public function Footer() {
                  
          // Position at 15 mm from bottom
                  
          $this->SetY(-15);
                  
          // Set font
                  
          $this->SetFont('helvetica''I'8);
                  
          // Page number
                  
          $this->Cell(010'Page '.$this->getAliasNumPage().'/'.$this->getAliasNbPages(),
           
          0false'C'0''0false'T''M');
              }

          da hast du die Angabe der Seite durch 2 Methoden gelöst, die wohl offensichtlich integer zurückliefern ... da schreibst du einfach deine gewünschten Änderungen mit .. -

          also
          PHP-Code:
           public function Footer() {
                  
          // Position at 15 mm from bottom
                  
          $this->SetY(-15);
                  
          // Set font
                  
          $this->SetFont('helvetica''I'8);
                  
          // Page number
                  
          $this->Cell(010'Seite '.($this->getAliasNumPage()+5).' von '.($this->getAliasNbPages()+7),
           
          0false'C'0''0false'T''M');
              }

          - oder wolltest du aus der 7 die 19 machen ? dann wären das statt +7 eben +12 - du müsstest die +5 von der ersten Seite quasi hinten auch dazuschreiben

          keine Fantasie, diese Jugend *lach*

          alternativ könntest du sogar diese Footerfunkion umschreiben um es flexibler zu machen

          PHP-Code:
          public function Footer($startoffset=0,$endoffset=0) {
                  
          // Position at 15 mm from bottom
                  
          $this->SetY(-15);
                  
          // Set font
                  
          $this->SetFont('helvetica''I'8);
                  
          // Page number
                  
          $this->Cell(010'Seite '.($this->getAliasNumPage()+$startoffset).' von '.($this->getAliasNbPages()+$startoffset+$endoffset),
           
          0false'C'0''0false'T''M');
              }

          dann müsste im Script der Aufruf der Footer-Methode noch angepasst werden auf dein gewünschtest "Footer(5,7);"
          wenn du es ohne Parameter aufrufst, hast du automatisch wieder das alte Verhalten, dass Seiten eben bei 1 beginnen und bis zur Endseite durchnummeriert werden
          "Irren ist männlich", sprach der Igel und stieg von der Drahtbürste [IMG]http://www.php.de/core/images/smilies/icon_lol.gif[/IMG]

          Kommentar


          • #6
            Zitat von ne0n Beitrag anzeigen
            Seite 1: Seite 6 von 19
            Seite 7: Seite 12 von 19
            In welchem Szenario soll das sinnvoll sein, wenn man fragen darf?
            [SIZE="1"]RGB is totally confusing - I mean, at least #C0FFEE should be brown, right?[/SIZE]

            Kommentar


            • #7
              ich könnte mir vorstellen, dass er beim Ausdruck dann noch andere Seiten mitliefern will, die die fehlenden Seiten ergeben ...

              "Irren ist männlich", sprach der Igel und stieg von der Drahtbürste [IMG]http://www.php.de/core/images/smilies/icon_lol.gif[/IMG]

              Kommentar


              • #8
                @eagle275
                Ja wenn es so einfach wäre. Das habe ich ja bereits ausprobiert, aber dann ändern sich die Seitenzahlen nicht mehr. Ich habe folgendes Ausprobiert, da es auch ein String ist der geliefert wird. Ein wenig Fantasie habe ich ja schon

                PHP-Code:
                ((int)$this->getAliasNumPage()+5)
                (
                intval($this->getAliasNumPage())+5
                Aber dann ist die Seitenzahl immer 5. So wie ich das jetzt Verstanden habe wird die Methode bei der neuen Seite aufgerufen und ich müsste mir ein eigene System schreiben. Sprich eine globale variable deklarieren und jeweils um 1 hoch zählen.

                @ChrisB
                eagle275 sag es

                Kommentar


                • #9
                  das mit der globalen Variable lassen wir mal besser ...

                  hast du gesehen, dass bei Example 3 der Code eine Kindklasse der tcpdf-Klasse erzeugt hat ? - nur daher gibt es ja die getAliasNumPage und getAliasNbPages Funktionen mit $this->

                  wenn du nicht die OriginalKlasse um eine Kindklasse erweiterst, sondern lediglich ein Objekt erzeugst, muss der Aufruf natürlich

                  $Objekt->getAliasNumPage()

                  heißen und so wie ich das verstanden habe, zählt "er" automatisch die Seiten, wenn du mit addPage ne neue anlegst

                  wenn du error-reporting hoch gedreht hättest, dann musst du eigentlich die Fehlermeldung bekommen, dass die beiden Methoden bei dir unbekannt sind .. - das würde auch erklären, dass da immer 5 steht - weil einfach "nichts" zurückgeliefert wird weil er ja die Funktion nicht findet ......
                  "Irren ist männlich", sprach der Igel und stieg von der Drahtbürste [IMG]http://www.php.de/core/images/smilies/icon_lol.gif[/IMG]

                  Kommentar


                  • #10
                    Ich habe die beiden Funktionen Header() und Footer() überschrieben:

                    PHP-Code:
                    class myPDF extends TCPDF {
                      public function 
                    Header() {
                        ...
                      }

                      public function 
                    Fotter() {
                        ...
                      }


                    $this->getAliasNumPage() liefert daher die Seitenzahlen. Es funktioniert ja derzeit nur eben mit Seite 1 von 7 und nicht mit Seite 5 von 19.

                    Kommentar


                    • #11
                      nun wenn 1 -> 7 ankommt , dann sollte es ausreichen wie ich beschrieben habe auf die Ausgabe was draufzuschlagen ...

                      aber DOC lesen könntest du auch selbst .. getALIASNumPage ... ist halt nur der Alias ... es gibt auch eine (mindestens) Methode zum direkten Auslesen der Nummer .,.

                      die richtigen Methoden heißen (wen wunderts) getPage( ) und getNumPages - und die liefern auch Integer-Zahlen, mit denen wir unsere kleine Addition machen können

                      PHP-Code:
                      $this->Cell(010'Seite '.($this->getPage()+5).' von '.
                      (
                      $this->getNumPages()+12), 0false'C'0''0false'T''M'); 
                      "Irren ist männlich", sprach der Igel und stieg von der Drahtbürste [IMG]http://www.php.de/core/images/smilies/icon_lol.gif[/IMG]

                      Kommentar


                      • #12
                        Danke für den Hinweis. Wie gesagt, ich habe es mir angeschaut, aber ich habe es leider nicht bemerkt. Ich bin in PHP noch nicht sehr versiert und daher konnte ich mit dem Alias nichts anfangen.

                        Jetzt funktioniert es auch. Danke nochmals. Jetzt muss ich nur noch schauen, dass ich die Gesamtseitenanzahl richtig mache. Den getNumPages() und getPage() haben den selben Effekt. Laut deinem Codestück heißt das:

                        Seite 6 von 12
                        Seite 7 von 13
                        ...

                        Ich werde mal schauen, dass ich das richtig mache. Jetzt verstehe ich den Code besser und finde sicherlich eine Lösung

                        Kommentar


                        • #13
                          das dürfte wohl daran liegen, dass du noch gar nicht Alle 7 Seiten erzeugst - dann ändert sich natürlich die Ausgabe von getNumPages auf 7 und 7 +12 ist nach Adam Ries(e) 19 ^^
                          "Irren ist männlich", sprach der Igel und stieg von der Drahtbürste [IMG]http://www.php.de/core/images/smilies/icon_lol.gif[/IMG]

                          Kommentar

                          Lädt...
                          X