2016-04-25 4 views
1

Я создаю счета-фактуры, используя MPDF. Мои строки позиций динамичны, поэтому высота таблицы, которая показывает элементы, должна быть гибкой. Когда я печать PDF с помощью следующего кода:Как установить высоту таблицы в mpdf

<!-- 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('d-m-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 следующим образом: enter image description here

Но мне нужно напечатать его следующим образом:

enter image description here

У меня есть пробовал использовать line-height, но он искажает представление, потому что valign в td не будет выравнивать содержание наверху.

С line-height:100px в TD печати выглядит следующим образом:

enter image description here

Есть ли способ, чтобы заполнить полную страницу, увеличивая высоту элементов таблицы динамически.

ответ

0

Я искал mpdf line-height и нашел этот неотвеченный вопрос.

Вот несколько решений, которые я использовал.

Вариант 1

  1. Count каждую строку в течение цикла
  2. оценить приблизительную высоту каждой строки. Обычно это фиксируется на одной строке, поэтому это не проблема.
  3. Минус (строки х высота) от требуемой высоты стола
  4. В течение цикла, если номер строки равен общей сумме строк, то это последняя строка в этом случае можно добавить <td height="##"> для последней строки

Вариант 2

Добавить шпатлевки ряды

  1. Рисунок, сколько строк вам нужно на счете-фактуре, чтобы заполнить т он нужное количество (держать его меньше, чем максимальная)
  2. Затем используйте что-то вроде следующего завалить таблицы после

    if($current_row < $total_rows){ for($i=$current_row; $i<$total_rows; $i++){ echo '<tr><td colspan="4"></td></tr>'; } } >
-1

Вы должны указать его в клетке, как ниже:

<td style="height:4.6cm; vertical-align: text-top;"></td> 
+0

Fails второй вопрос. –

0

Вот несколько решений, которые я использовал. 1) Количество всех тр в TBODY 2) Затем найдите последний тр этого TBODY с помощью CSS установить высоту строки ТДА

0

Согласно документации MPDF библиотеки here, мы можем установить высоту только элементы уровня блока. Я столкнулся с той же проблемой, затем переместил таблицу в div и добавил высоту в div, как показано ниже.

<div height="870" style="border:solid 1px #ccc"> 
    <table class="table> 
     Your table content here... 
    </table> 
</div> 
Смежные вопросы