<body style="height: 100%;" onload="window.print();">

Entonces este es mi código en PHP, luego hago eco del html pero solo imprime la primera página. Todas las soluciones que he encontrado dicen que debería poner la altura / anchura al 100%, pero todavía no funciona.

Ya probado

body, html, #wrapper { width: 100%; 
                       height:100%;
                    }
@media print { ... }

Este es el cuerpo de la página de impresión, puede ver el foreach por eso en algunos casos es más largo que una página. ¿Por qué está pasando esto?

<body onload="window.print();">

            <div class="wrapper">
              <section class="invoice">
                <!-- title row -->
                <div class="row">
                  <div class="col-xs-12">
                    <h2 class="page-header">
                      '.$company_info['company_name'].'
                      <small class="pull-right">Date: '.$order_date.'</small>
                    </h2>
                  </div>
                  <!-- /.col -->
                </div>
                <!-- info row -->
                <div class="row invoice-info">

                  <div class="col-xs-12 ">

                    <b>'.$this->lang->line('orderno').':</b> '.$order_data['bill_no'].'<br>
                    <b>'.$this->lang->line('customername').':</b> '.$name['customer_name'].'<br>
                    <b>'.$this->lang->line('customeradress').':</b> '.$name['customer_address'].' <br />
                    <b>'.$this->lang->line('customerphonenumber').':</b> '.$name['customer_phone'].'
                  </div>
                  <!-- /.col -->
                </div>
                <!-- /.row -->
                </br>
                <!-- Table row -->
                <div class="row">
                  <div class="col-xs-12 table-responsive">
                    <table class="table table-striped">
                      <thead>
                      <tr style="border:1px">
                      <th colspan="2"></th>
                      <th style="text-align:center" colspan="2">'.$this->lang->line('qty').'</th>
                      <th colspan="6"></th>
                    </tr>
                      <tr>
                        <th>'.$this->lang->line('productname').'</th>
                        <th>'.$this->lang->line('price').'</th>
                        <th>Commandée</th>
                        <th>à Livrer</th>
                        <th>'.$this->lang->line('vat').'</th>
                        <th>'.$this->lang->line('discount').'</th>
                        <th>'.$this->lang->line('amount').'</th>
                      </tr>
                      </thead>
                      <tbody>'; 

                      foreach ($orders_items as $k => $v) {

                        $product_data = $this->model_products->getProductData($v['product_id']); 
                        setlocale(LC_MONETARY, 'en_US');
                        $html .= '<tr>
                            <td>'.$product_data['name'].'</td>
                            <td>'.number_format($v['rate'], 3).'</td>
                            <td>'.$v['qty'].'</td>
                            <td>'.$v['qty_liv'].'</td>
                            <td>'.$v['vat'].' %</td>
                            <td>'.$v['discount'].' %</td>
                            <td>'.number_format($v['amount'], 3).'</td>
                          </tr>';
                          if($v['free'] > 0){
                            $html .= '<tr>
                            <td>'.$product_data['name'].'</td>
                            <td>0</td>
                            <td>0</td>
                            <td>'.$v['free'].'</td>
                            <td>0</td>
                            <td>0</td>
                            <td>0</td>
                          </tr>';
                          }
                      }


                      $html .= '</tbody>
                    </table>
                  </div>
                  <!-- /.col -->
                </div>
                <!-- /.row -->

                <div class="row">

                  <div class="col-xs-6 pull pull-right">

                    <div class="table-responsive">
                      <table class="table">
                        <tr>
                          <th style="width:50%">'.$this->lang->line('grossamount').':</th>
                          <td>'.$order_data['gross_amount'].'</td>
                        </tr>';


                            $html .= '<tr>
                              <th>'.$this->lang->line('totalvat').':</th>
                              <td>'.$order_data['total_vat'].'</td>
                            </tr>';
                        $html .=' 
                        <tr>
                          <th>'.$this->lang->line('netamount').':</th>
                          <td>'.$order_data['net_amount'].'</td>
                        </tr>
                        <tr>
                          <th>'.$this->lang->line('status').':</th>
                          <td>'.$confiem_status.'</td>
                        </tr>
                      </table>
                    </div>
                  </div>
                  <!-- /.col -->
                </div>
                <!-- /.row -->
              </section>
              <!-- /.content -->
            </div>
        </body>

En algunos casos el foreach va por más de una página, así que ...

0
ChiKa LiO 16 sep. 2019 a las 13:27

3 respuestas

La mejor respuesta

Quite

<link rel="stylesheet" href="'.base_url('assets/dist/css/AdminLTE.min.css').'">

Entonces adminss css fue la causa ...

0
ChiKa LiO 16 sep. 2019 a las 15:07

¿Intentaste con ?:

<body style="height: 100wh;" onload="window.print();">

Puede intentar explicar un poco mejor cuál es el propósito de su código y por qué está tratando de imprimir muchas páginas.

0
Iñigo 16 sep. 2019 a las 11:27

Esto explica algunas ideas básicas para crear rápidamente un conjunto de estilos de impresión utilizando la sintaxis CSS3 @media.

Por supuesto, muchos de nosotros ahora descuidamos los estilos de impresión por completo. Sin embargo, se necesita relativamente poco esfuerzo para crear algo simple que pueda evitar que los usuarios impriman todas las cosas desde una página que probablemente no necesitan. Recientemente agregué algunos estilos de impresión para este sitio, así que espero que puedan ser útiles para otros:

En primer lugar, estos estilos se colocan mejor al final de todos sus otros estilos. Esto significa que se les otorga un mayor peso debido a la cascada CSS y es menos probable que se sobrescriban con otras reglas en otros lugares.

En primer lugar, utilizando consultas de medios CSS3, podemos dirigir estilos para imprimir de esta manera:

@media print {
 /* styles go here */
}

0
dılo sürücü 16 sep. 2019 a las 11:08