【问题标题】:dompdf page break with codeigniter and foreach loop带有 codeigniter 和 foreach 循环的 dompdf 分页符
【发布时间】:2014-01-20 23:26:51
【问题描述】:

我正在使用 codeigniter 和 dompdf 来生成一个 pdf 文档。

文档是使用 foreach 循环生成的。每个循环创建几个表行。我想在每个循环的行之间有一个分页符。

我的相关 codeigniter 视图语法是:

<table width=100%>
<?php foreach($summary as $summary){  ?>
<tr class="firstrow">
<td colspan="10">
<?php echo  "<b>Customer</b>: <font color='blue'>".$summary->caccountname; ?>

<?php echo  "</font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <b>Order Number</b>: <font color='blue'>".$summary->OrderNum; ?>

<?php echo  "</font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <b>Sales rep</b>: <font color='blue'>".$summary->RepName; ?>

<?php echo  "</font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <b>Due Date</b>: <font color='blue'>".substr($summary->DueDate,0,10); ?>
</td>
</tr>
<tr>
<td colspan="10"><hr>
</td>
</tr>
<tr>
<td colspan="10">

  <table class="sortable" width="90%">
  <tr><td ><b>Product</td><td ><b>Ordered</td><td ><b>Processed</td><td ><b>Outstanding</td><td ><b>Dispatched</td><td ><b>Available (incl FJ)</td><td ><b>Available FJ</td></tr>
  <?php foreach($$linedetails as $linedetails){  ?>
  <tr>
  <td><?php echo $linedetails->Product;  ?></td>
  <td><?php echo $linedetails->cubicvolume;  ?></td>
  <td><?php echo $linedetails->Processed;  ?></td>
  <td><?php echo $linedetails->Outstanding;  ?></td>
  <td><?php echo $linedetails->Dispatched;  ?></td>
  <td><?php echo $linedetails->TotalVolume;  ?></td>
  <td><?php echo $linedetails->FJVolume;  ?></td>
  </tr>
  <?php } ?>
  </table>
</td>
</tr>


<?php } ?>
</table>

我已经给第一个 tr 一个类firstrow,我希望每次都在这一行之前出现一个分页符。

因此,我在页眉中应用了以下样式表:

<style>
 @media print
 {
 .firstrow {page-break-before:always}
 }
</style>

这不起作用。

如何在每个循环firstrow TR 之前放置一个分页符以达到我想要的结果?

一如既往的感谢

【问题讨论】:

  • 请解释一下你想做什么,你想让&lt;tr class='first_row'&gt;在一个pdf页面上吗?那么每个..first_row.. 都会有自己的页面?

标签: php codeigniter foreach dompdf page-break


【解决方案1】:

要使 Pagebreak 与 tr 一起工作,请为 tr 编写一行 css

 tr    { page-break-inside:avoid; page-break-after:auto }

试试上面的代码。

如果不起作用,则添加

table { page-break-inside:auto }

【讨论】:

  • 谢谢,这似乎对我的 pdf 没有任何影响。
  • 当我使用 div 而不是表格时,这对我来说效果很好!
【解决方案2】:

试试这个,我做报告的方式完全一样

<?php 
$nbsp5 =  "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;";

foreach($summary as $summary) {  ?>
    <table width="100%" style="page-break-after:always;">
        <tr>
            <td colspan="10">
                <?php echo  "<b>Customer</b>: <font color='blue'>".$summary->caccountname; ?>
                <?php echo  "</font>".$nbsp5 ." <b>Order Number</b>: <font color='blue'>".$summary->OrderNum; ?>
                <?php echo  "</font>".$nbsp5 ." <b>Sales rep</b>: <font color='blue'>".$summary->RepName; ?>
                <?php echo  "</font>".$nbsp5 ." <b>Due Date</b>: <font color='blue'>".substr($summary->DueDate,0,10); ?>
            </td>
        </tr>
        <tr>
            <td colspan="10"><hr></td>
        </tr>
        <tr>
            <td colspan="10">
              <table class="sortable" width="90%">
                <tr>
                    <td><b>Product</b></td>
                    <td><b>Ordered</b></td>
                    <td><b>Processed</b></td>
                    <td><b>Outstanding</b></td>
                    <td><b>Dispatched</b></td>
                    <td><b>Available (incl FJ)</b></td>
                    <td><b>Available FJ</b></td>
                </tr>
              <?php foreach($$linedetails as $linedetails){  ?>
              <tr>
                  <td><?php echo $linedetails->Product;  ?></td>
                  <td><?php echo $linedetails->cubicvolume;  ?></td>
                  <td><?php echo $linedetails->Processed;  ?></td>
                  <td><?php echo $linedetails->Outstanding;  ?></td>
                  <td><?php echo $linedetails->Dispatched;  ?></td>
                  <td><?php echo $linedetails->TotalVolume;  ?></td>
                  <td><?php echo $linedetails->FJVolume;  ?></td>
              </tr>
              <?php } ?>
              </table>
            </td>
        </tr>

    </table>
<?php } ?>

(第一个&lt;table&gt;标签移动到循环内)

请为header and footer 尝试这个答案。

【讨论】:

  • 感谢 Kyslik,100% 有效。知道如何添加带有徽标和页脚的页眉吗?页脚第 1 页,共 3 页。页眉只是“报告”?否则很乐意做研究。再次感谢。
  • 要添加标题,我只会包含“新”表(在每个 foreach 迭代中)。至于分页再次在底部添加新表格。我会尝试编辑我的答案,但我不知道它是否会起作用。
猜你喜欢
  • 2016-12-09
  • 1970-01-01
  • 2019-03-24
  • 2010-11-07
  • 2016-10-16
  • 1970-01-01
  • 2016-02-21
  • 2012-08-06
  • 1970-01-01
相关资源
最近更新 更多