Я создаю счета-фактуры, используя MPDF. Мои строки позиций динамичны, поэтому высота таблицы, которая показывает элементы, должна быть гибкой. Когда я печатаю PDF, используя следующий код:
<!-- Latest compiled and minified CSS --> <?php echo $this->Html->css(array('bootstrap.min','AdminLTE.min','skin-green','font-awesome.min')); ?> <style type="text/css"> .products{ width: 100%; border-collapse: collapse; } h2,h3{ margin: 0; padding:0; } .border{ border: 1px solid black; padding:5px; } table.products{ border: 1px solid black; height: 500px; margin-left: -6px; margin-right: -6px; margin-bottom: -6px; } .products tr td{ padding:5px; border:1px solid #333; } .products tr th{ padding:5px; border:1px solid #333; } .pull-right{ float: right; } </style> <!-- title row --> <div class="border"> <table width="100%"> <tr> <td style="width:35%"> </td> <td style="width:35%" align="center"> Estimate </td> <td style="width:35%" align="right"> Date: <?php echo date('dm-Y',strtotime($invoice['Invoice']['dated'])); ?> </td> </tr> <tr> <td colspan="3" align="center"> <br> <h3>Invoice Heading</h3> </td> </tr> </table> <hr/> <div class="row"> <div class="col-xs-12 border-right"> To: <?php echo $invoice['Invoice']['user']; ?><br> Mobile.: <?php echo $invoice['Invoice']['mobile']; ?><br> Address: <?php echo $invoice['Invoice']['address']; ?><br> </div> </div> <hr/> <!-- Table row --> <div class="row"> <div class="col-xs-12 table-responsive"> <table class="products"> <thead> <tr> <th width="60"><?php echo __('Sr. No.'); ?></th> <th><?php echo __('Quantity'); ?></th> <th width="250"><?php echo __('Particulars'); ?></th> <th><?php echo __('Rate'); ?></th> <th><?php echo __('Amount'); ?></th> </tr> </thead> <tbody> <?php $i = 0; foreach ($invoice['InvoiceDetail'] as $invoiceDetail): $i++; ?> <tr> <td><?php echo $i; ?></td> <td><?php echo $invoiceDetail['quantity']; ?></td> <td><?php echo $invoiceDetail['Item']['name']; ?></td> <td><?php echo $invoiceDetail['price']; ?></td> <td align="right"><?php echo $invoiceDetail['amount'] ?></td> </tr> <?php endforeach; ?> <tr> <td colspan="3"></td> <td>Total: </td> <td align="right"><i class="fa fa-inr"></i> <?php echo number_format((float)$invoice['Invoice']['total'], 2, '.', ''); ?> </td> </tr> <tr> <td colspan="5">Amount in words: Rs.<?php echo $c2w ?></td> </tr> </tbody> </table> </div><!-- /.col --> </div><!-- /.row --> </div>
Он печатает PDF следующим образом:
Но мне нужно распечатать его следующим образом:
Я пробовал использовать высоту линии, но искажает представление, потому что valign в td не будет выравнивать содержимое сверху.
С line-height:100px
в распечатке TD выглядит следующим образом:
Есть ли способ заполнить всю страницу, динамически увеличивая высоту таблицы элементов.
Я искал mpdf line-height и нашел этот неотвеченный вопрос.
Вот несколько решений, которые я использовал.
Опция 1
<td height="##">
для последней строки Вариант 2
Добавить строки наполнителя
Затем используйте что-то вроде следующего: заполните таблицу после
if($current_row < $total_rows){ for($i=$current_row; $i<$total_rows; $i++){ echo '<tr><td colspan="4"></td></tr>'; } }
if($current_row < $total_rows){ for($i=$current_row; $i<$total_rows; $i++){ echo '<tr><td colspan="4"></td></tr>'; } }
?>
Вот несколько решений, которые я использовал. 1) Подсчитайте все tr в tbody 2) Затем найдите последний tr этого tbody, используя css set line-height of td
Согласно документации библиотеки mPDF, мы можем установить только высоту элементов уровня блока. Я столкнулся с той же проблемой, затем переместил таблицу в div и добавил высоту в div, как показано ниже.
<div height="870" style="border:solid 1px #ccc"> <table class="table> Your table content here... </table> </div>
Вы должны указать его внутри ячейки, как показано ниже:
<td style="height:4.6cm; vertical-align: text-top;"></td>