dompdf如果元素超过页面高度,则分页


dompdf Page break if element is exceeding page height?

在dompdf中进行分页符的最佳方法是什么?

我看了一下css属性之前的分页符,但当我这样做时,它不起作用:

table {page-break-before:auto;}

那页还在我的桌子中间折断。

有没有可能设置我的html/css,这样如果元素要超过页面高度,页面就会在元素之前中断?

理想情况下,我想把我的html分成几个div部分,这样如果每个部分要超过当前页面的高度,它就会在一个新页面上开始。

使用page-break-inside: auto;基本上是对dompdf说"在分页时做你通常会做的事情。"

要在表之前/之后强制分页,可以使用page-break-before: always;/page-break-after: always;

为了让dompdf避免破坏元素内部,您可以使用page-break-inside: avoid;

你可以用这个在线调试器进行快速测试——经过几天的测试,我终于发现了我的分页和边距问题。

Excursus:是否有人在开发/生产环境上安装了调试环境,并可以向我介绍任何文档或教程?

这里有一个技巧:将不想跨多页打印的<table>放在另一个<table>中。

在我的例子中,这是因为我在另一个表中使用了一个表。比如

<table>
   <tr>
      <td>
         <table></table>
      </td>
   </tr>
 </table>

所以我把桌子拿了出来。解决了我的问题。

//循环开始前先赋值,循环内部设置后增量操作符。其次,结合单页数据显示项的条件使用。

  <?php $n=1 ?>
          @foreach ($purchases as $key=> $purchase)
               <tr >
                   <td> {{ $key + 1 }}  </td>
                   <td> {{ $purchase->supplier->company_name ? 
                   $purchase->supplier->company_name : "" }}  </td>
                   <td> {{ "S-".$purchase->id  }}   </td>
                   <td> {{  salte_items($purchase->purchaseItems) }}        </td>
                   <td> {{ $purchase->created_at->format('d-m-Y') }}  </td>
                   <td> {{ intval($purchase->total) }}    </td>
                    </tr>
                  
                    @if ( $n % 25 == 0 )
                        <div style="page-break-before:always;"> </div>
                    @endif
                    <?php $n++ ?>
           @endforeach