window.print();仅打印一页

时间:2019-09-16 10:27:09

标签: javascript php html

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

所以这是我在PHP中的代码,然后我回显html,但它只打印第一页。我发现的所有解决方案都说我应该将高度/宽度设置为100%,但仍然无法使用。

已经尝试过

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

这是打印页的正文,您可以看到foreach,这就是为什么在某些情况下它长于一页的原因。 为什么会这样?

<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>

在某些情况下,foreach会占用更多的页面,因此。

3 个答案:

答案 0 :(得分:0)

您尝试过吗?:

3d-pages/views/show.html

您可以尝试更好地解释代码的用途,以及为什么要打印很多页面?

答案 1 :(得分:0)

这解释了一些使用CSS3 @media语法快速创建一组打印样式的基本思想。

当然,我们许多人现在完全忽略了打印样式。但是,创建简单的东西所需的精力相对较小,可以节省用户从他们可能不需要的页面上打印所有内容的麻烦。我最近为该网站添加了一些打印样式,因此希望这些样式对其他人有用:

首先,这些样式最好放在所有其他样式的末尾。这意味着由于CSS级联,它们被赋予更大的权重,并且不太可能被其他地方的其他规则覆盖。

首先,使用CSS3媒体查询,我们可以将样式指定为打印样式:

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

答案 2 :(得分:0)

我已删除

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

所以管理CSS是原因。