2017-10-19 2 views
0

J'utilise laravel-snappy & wkhtmltopdf 0.12.2.4 (qt non corrigé) qui ne supporte pas le commutateur --header-html donc je dois créer manuellement un en-tête mais le problème est que l'en-tête et le pied de page n'apparaissent que sur la première page. Est-il possible d'ajouter un en-tête et un pied de page à chaque page sans mettre à jour ou rétrograder wkhtmltopdf?Comment ajouter un en-tête et un pied de page sur chaque page avec wkhtmltopdf qt non apparié?

html

<div class="container"> 
    <div class="header"> 
     <img src="{{URL ('/images/logo.png')}}" alt="logo" width="125" height="50"/> 
     <h2>Parts Orientation</h2> 
    </div> 
    <div class="row marginBody"> 
     @foreach ($parts as $part) 
      <div class="col-xs-2 marginThumbnail"> 
       <div class="border text-center"> 
        <img class="img" src="data:image/jpeg;base64, {{$part->image}}" 
         alt="Error" width="120" height="120"/> 
        <p class="displayText {{$part->class}}"> 
         {{$part->name}} 
        </p> 
       </div> 
      </div> 
     @endforeach 
     <div class="footer"> 
      <p> {{$date}} </p> 
     </div> 
    </div> 
</div> 
</body> 
</html> 

contrôleur

public function printPDF(Request $request) 
{ 
    $parts = Parts::all(); 
    $date = $this->getTime(); 

    $pdf = SnappyPdf::loadView('parts.print.landscape', ["parts" => $parts, "date" => $date->toFormattedDateString()]) 
        ->setOrientation('landscape') 
        ->setPaper('a4'); 
    } 
} 

Répondre

0

j'ai pu trouver une solution qui fonctionne pour moi. Il est très compliqué, mais cela fonctionne

contrôleur

public function printPDF(Request $request) 
{ 
    $parts = Parts::all(); 
    $date = $this->getTime(); 
    // divide by 36 because I can fit 36 items on each page 
    $totalPages = ceil(count($parts)/36); 

    $pdf = SnappyPdf::loadView('parts.print.landscape', ["parts" => $parts, "date" => $date->toFormattedDateString(), "totalPages" => $totalPages]) 
        ->setOrientation('landscape') 
        ->setPaper('a4'); 
    } 
} 

html

<body> 
@php 
$count = 0; 
$page = 0; 
@endphp 
<div class="container"> 
    <div class="header"> 
     <img src="{{URL ('/img/logo.png')}}" alt="logo" width="125" height="50"/> 
     <h2>PARTS ORIENTATION</h2> 
    </div> 
    <div class="row marginBody"> 
     @foreach ($parts as $part) 
     @php 
      // 36 is the total number of items I can fit on a page 
      // so after 36 I add a header and footer 
      if ($count === 36) { 

       echo '<div class = "newPageHeader">'; 
       echo '<h2>PARTS ORIENTATION</h2>'; 
       echo '</div>'; 
       $count = 0; 
       $page++; 
      } 
     @endphp 
      <div class="col-xs-2 outline"> 
       <div class="border text-center"> 
        <img class="img" src="data:image/jpeg;base64, {{$part->image}}" 
         alt="Error" width="127" height="127"/> 
        <p class="displayText {{$part->c,ass}}"> 
         {{$part->text}} 
        </p> 
       </div> 
      </div> 
     @php 
      $count++; 
      if ($count == 36) { 
       // 36 is the total number of items I can fit on a page 
       // so after 36 I add a header and footer 
       $page = ($page == 0) ? 1 : $page; 
       echo '<footer class="footer">'; 
       echo "<span class='dateFooter'> $date </span>"; 
       echo "<span class='pageFooter'> $page of $totalPages </span>"; 
       echo '</footer>'; 
      } 
      elseif ($totalPages == $page) { 
       echo '<footer class="lastFooter">'; 
       echo "<span class='dateFooter'> $date </span>"; 
       echo "<span class='lastPageFooter'> $page of $totalPages </span>"; 
       echo '</footer>'; 
     } 
     @endphp 
     @endforeach 
    </div> 
</div> 
</body>