Как автоматически добавить "новую страницу" в dompdf

Я генерирую PDF-файл, используя domppdf, вот мои HTML и CSS для макета PDF:

<html>
<head>

<style type="text/css">
 .boxtest{
      height: 90px;
      width: 270px;
      background: #AAA;
      font-size: 48px;
      font-style: oblique;
      color: #999;
      text-align: center;
      margin-top: 20px;
      margin-left: 5px;
    }

table
{
  width: 100%;
}

th
{
    background-color: #BBB;
    height: 50px;
}

td
{
    text-align: center;
}

/*tr:hover {background-color: #f5f5f5}*/
tr:nth-child(even)
{
    background-color: #f2f2f2;border:4px solid #73AD21;
}

tr
{
    border:4px solid #73AD21
}

.table-title
{
    background-color: #EEE;
    position:fixed;
    top:0em;
}

.table-content- 
{
    position:fixed;
    top:2.5em;
    font-style: sans-serif;
}

h3, div
{
  font-family: sans-serif;
}


.company-logo
{
    position: absolute;
    float:left;
    margin-left: 1em;
    top:0;
    left:1em;
}
.cover-text
{
    position:absolute;
    top:7em;
    margin: 8em 4em 4em;
    text-align: justify;
    page-break-after: always;
}

.footer
{
    width:100%;
    position:fixed;
    bottom:37px;
    text-align: center;
    font-size: 13px;
}

.page_number
{
    width:100%;
    position:fixed;
    bottom:17px;
    text-align: center;
    font-size: 11px;

}

.page_breaking
{
  position:absolute;
  bottom: 0px;
  page-break-after: always;
}

.page_number:before { content: counter(page); }

@page
{
    margin:0;
    padding: 0;
}


</style>
</head>

<body>
<div class="footer" align="center" style="font-family: sans-serif;"> Powered by  Hyosoka Poipo, 2016 </div>
<div class="page_number"></div>


<div style="background-color: #353535; max-width:200%; margin:0; padding:0" >
  <div style="color: white; margin-top:20px; margin-bottom: 20px;">
     <div align="center"><img src="img/ / -logo.png" alt="  Logo"/></div>
     <div align="center"><h3 > {{$Title}} </h3> </div>
     <div align="center"><h3><?php echo date("M-d, Y"); ?> </h3></div>
  </div>
</div>


<div class="cover-text row" align="left">
  <p> COVER TEXT </p>
  {{$CoverText}}
</div>



<div class="table-title" align="center" style="font-size:34px;">
TABLE OF REPORT
</div>


<table class="table table-condensed table-bordered table-hover table-content- ">
  <thead>
    <tr>
    <th>No</th>
    <th>Candidate</th>
    <th>Rating</th>
    @if($Comment != "false")<th>Comment</th>@endif
    @if($Num == 99)<th>Status</th>@endif
    </tr>
  </thead>

 <tbody>
      <?php $number = 1 ?>
     @foreach($H as $candi)
        <tr >
         <td><?php echo $number++ ?></td>
         <td style="text-align:left;"><b>{{$candi->fullname}}</b><br><div style="font-size:13px">{{$candi->phone}} {{$candi->email}}<br>{{$candi->location}}</div></td>
         <td>{{$candi->rating}}</td>
         @if($Comment != "false" )<td><div>{{$candi->comment}}</div></td>@endif
         @if($Num == 99)<td><div>{{RHelper::Type($candi->status)}}</div></td>@endif
        </tr>
        {{-- The problem is in here... If the loop is big, then dompdf just generate 1 page and forget the rest of the loop --}}
      @endforeach


  </tbody>
</table>

</body>
</html>

Проблема в цикле, если у меня много данных, dompdf просто сгенерирует для меня 1 страницу, как показано ниже:

Итак... Как мне автоматически создать новую страницу в dompdf, чтобы показать все доступные данные из моего цикла. Я попытался добавить код ниже в конце моего HTML

.page_breaking
{
  position:absolute;
  bottom: 0px;
  page-break-after: always;
} 

{{-- <div class="page_breaking"></div> --}}

Это не работает для меня, потому что на странице цикл начинается с начала снова. А также я попытался поставить

style="page-break-after: always;"

Когда индекс достигает определенного значения, но это также не работает для меня, потому что запрос стал тайм-аут. Так есть ли еще способ, который я могу попробовать? заранее спасибо

1 ответ

Проблема в том, что вы стилизируете свою таблицу с помощью следующего CSS:

.table-content- 
{
  position:fixed;
  top:2.5em;
  font-style: sans-serif;
}

Dompdf не будет размещать контент с фиксированной или абсолютной позицией. Текущий позиционированный контент отображается следующим образом:

  • Абсолют: отображается только на странице, на которой он отображается.
  • Исправлено: отображается на странице, на которой он отображает и на любой следующей странице.

Удалите позиционирование на вашем столе, и он должен просто прекрасно выглядеть.

Другие вопросы по тегам