Sara: html2Pdf

Beitrag lesen

Hallo,

<page pageset="old">
</page>

Ja prima, dann wäre doch alles in Ordnung.

alles in Ordnung? Für mich leider noch überhaupt nicht. Bis jetzt weiß ich nur, wenn ich <page pageset=old"> nach dem ersten </page> anfüge habe ich eine zweite Seite.

Ja, zum Beispiel. Und? Das ist nicht ganz trivial, zugegeben, aber es ist auch nicht gerade "rocket science".

Und? Da meine PHP Kenntnisse nicht gerade die besten sind und ich sehr viel Google muss habe ich damit doch ein sehr großes Problem. Ich zeig einfach mal meinen PHP Code, der nur für das PDF zuständig ist (wie gesagt solange alles auf eine Seite passt, alles wunderbar)

<!-- Kann immer stehen bleiben, selbst bei <page pageset="old"></page> wird es richtig eingefügt -->
<page backtop="1%" backbottom="2%" backleft="5%" backright="5%">
  <page_footer style="text-align:center; line-height:14px; font-size:10px; height:300px;">
  <?php echo nl2br(htmlspecialchars($text_unten));?>
  </page_footer>

<!-- Tabelle um die ganze Seite -->
<table style="width: 100%;">
  <tr> 
    <!-- Tabellenspalte für die Linke Seite -->
    <td style="width: 70%;">
      <h1 style="margin-top:42px; margin-bottom:30px; font-size:36px"><?php echo $titel;?></h1>
      <div style="line-height:22px; margin-top:10px;">
        <?php echo htmlspecialchars($Export->firma); ?><br>
        <?php echo htmlspecialchars($Export->titel); ?> <?php echo htmlspecialchars($Export->vorname . " ". $Export->name); ?><br>
        <?php echo htmlspecialchars($Export->strasse); ?><br>
        <?php echo htmlspecialchars($Export->plz); ?> <?php echo htmlspecialchars($Export->ort); ?>
      </div>

      <div style="margin-top:50px;">
        <div><?php echo nl2br($text_oben);?></div>
      </div>
      <!-- Hier wird die zweite Tabelle gefüllt um den Inhalt auszulesen -->
      <table style="width: 95%;">
          
          <thead>
            <tr>
              <th style="width:9%; text-align:left; padding-bottom:20px;">Pos</th>
              <th style="width:89%; text-align:left; padding-bottom:20px;">User</th>
            </tr>
          </thead>

          <tbody>
          <!-- Hier beginnt die Schleife -->
          <?php $pos = 1; 
                  foreach($UserAusgabe as $array)
          { ?>  
            <tr style="height:1.5em;">
              <td style="width:9%; text-align:left; vertical-align:top;"><?php echo $pos;?></td>
              <td style="width:89%; text-align:left; vertical-align:top;">
                <div style="padding-bottom:10px"><?php echo htmlspecialchars($array['UserName']); ?></div>
                <br><br>
              </td>
            </tr>
          <?php
          $pos++;
          } ?>        
          </tbody>
            
    </table>
        
  </td>
  <!-- Hier beginnt die Tabelle für die rechte Spalte -->
  <td style="width: 30%; vertical-align:top;">

    <div style="margin-bottom:22px;"><img src="logo.jpg"></div>
    <div style="line-height:20px; padding-left:5px;">Datum:&nbsp;&nbsp; <?php echo $datum;?><br></div>

    <div style="margin-top:42px; padding-left:5px;">
      <strong><?php echo $seite; ?></strong><br>
      <?php echo $strasse; ?><br>
      <?php echo $ort;?>
      <br><br>
      Fon: <?php echo $telefon; ?><br>
      Fax:&nbsp;<?php echo $fax;?>
      <br><br>
      Mail:&nbsp;&nbsp;<?php echo $email;?><br>
      Web:&nbsp;<?php echo $webseite;?>
      </div>
          
  </td>   
  </tr>
</table>
</page> 

Ich habe auch schon genau ausgerechnet wenn das Problem auftritt. 4 Einträge passen auf eine Seite, ab dem 5 tritt der Fehler auf. Das schöne? daran ist, die Einträge sind zu 100% vom Inhalt immer gleich. Also darauf müsste keine Rücksicht genommen werden.

Und bevor jetzt einer kommt und sagt warum ich hier inline CSS nutzte, ich kann leider im PDF kein externes CSS Anwenden daher inline!

Mein Problem ist also folgendes

Ich weiß wie viele Einträge in der Datenbank sind, diesen Wert erhalte ich mit $SummeUserDBPDF derzeit steht hier z.B. eine 6 drin.

In meiner foreach($UserAusgabe as $array) lese ich natürlich alle Einträge aus, hier müsste denke ich irgendetwas geändert werden dass ich im ersten Durchlauf nur 4 Einträge erhalte

Allerdings muss bereits hier

<!-- Tabelle um die ganze Seite -->
<table style="width: 100%;">

berücksichtigt werden, wenn mehr als 4 Einträge vorhanden sind, muss eine weitere Seite unten angefügt werden und zwar solange bis alle Einträge ihren Platz haben, bei z.B. 40 Einträge, müssen 10 Seiten a 4 Einträge angefügt werden. Gleichzeig muss aber der ganze Krempel sprich alles ab <!-- Tabelle um die ganze Seite --> ebenfalls kopiert werden und in die jeweiligen neuen Pages eingefügt werden und zu guter letzt muss das foreach wissen wo es sich derzeit befindet.

Sorry wenn alles etwas länger und vielleicht auch durcheinander rüber gekommen ist. Im erklären bin ich nicht wirklich gut :/ Hoffentlich kann mir jemand bei diesem schwierigen Problem helfen.