【问题标题】:how to print thead of the table on each print page?如何在每个打印页面上打印表格的标题?
【发布时间】:2014-09-04 10:20:40
【问题描述】:

当我打印或打印预览时,我的表格包含大量动态行,我使用 window.print() 函数仅在第一页上获得表格标题..但我希望每个打印页面上都有表格标题...帮助?

<div id="printablediv" >
<div style="padding:8px;font-size: 13px;">
    <center>
        <?php
        $sumMul = 0;
        $sumBil = 0;
        ?>
        <?php $total = $total_ni = $total_aa = $total_pe = $total_bak = $total_cnt = 0; ?>
        <table cellpadding="0" cellspacing="0" border="1" style="font-size: 13px;" >
            <thead id="head">
                <tr bgcolor="#333333"   style="color:#black;font-weight: bold;">
                    <th  width="100" align="center">Donor</th>
                    <th  width="100" align="center">Loan No.</th>
                    <th  width="120" align="center">Value Date</th>
                    <th  width="90" align="center">Curr</th>
                    <th  width="150" align="center">Multilateral</th>
                    <th  width="150" align="center">Bilateral</th>
                    <th  width="150" align="center">Forex</th>
                    <th  width="150" align="center">Multilateral</th>
                    <th  width="150" align="center">Bilateral</th>
                </tr>
            </thead>
            <?php $previousValue = $list[0]->LOAN_ID; ?>
            <?php $flag = 0; ?>
            <?php foreach ($list as $key => $val): ?>
                <tr>
                    <td align="center"><?php echo $val->EX_DONOR_CODE; ?></td>
                    <td align="center"><?php echo $val->LOAN_ID; ?></td>
                    <td  align="center"><?php echo $val->VALUE_DATE; ?></td>
                    <td align="center"><?php echo $val->TRANSACTION_CURRENCY_CODE; ?></td>
                    <td align="right"><?php
                        if ($val->DONOR_TYPE == 'MULTILATERL') {
                            $sumMul += $val->COMMIT_CUR_AMT;
                            echo $val->COMMIT_CUR_AMT;
                        }
                        ?></td>
                    <td align="right"><?php
                        if ($val->DONOR_TYPE == 'BILATERAL') {
                            $sumBil += $val->COMMIT_CUR_AMT;
                            echo $val->COMMIT_CUR_AMT;
                        }
                        ?></td>
                    <td align="right"><?php //reports::report1_5Forex($val->TRANSACTION_CURRENCY_CODE ,$val->VALUE_DATE) ?></td>
                    <td align ="right"></td>
                </tr>
<?php $previousValue = $val->LOAN_ID ?>

<?php endforeach; ?>
        </table>
        <input type="button" value="Print" id="prt" onclick="javascript:printDiv('printablediv')" />
</div>

我在这里得到了 javascript 代码:

<script language="javascript" type="text/javascript">
function printDiv(divID) {
    var divElements = document.getElementById(divID).innerHTML;
    var oldPage = document.body.innerHTML;
    document.body.innerHTML =
            "<body>" +
            divElements + "</body>";
    $('#prt').hide();
    window.print();
    $('#prt').show();
    document.body.innerHTML = oldPage;
}

【问题讨论】:

  • AFAIK 这是不可能的。
  • 我得到了 mpdf 方法,但它既费时又费力而且处理速度也很慢..
  • 是的,这当然是可能的,但它不是一个 javascript 解决方案......
  • 我们可以使用js计算打印页面吗?这样我就可以将自定义头附加到每个打印页面...有没有 jquery pdf 生成器?

标签: javascript php jquery html css


【解决方案1】:

你应该使用theadtbody在每一页打印表格标题http://www.w3.org/TR/html4/struct/tables.html#edef-THEAD

表格行可以分为表格头、表格脚和一个或 更多表格主体部分,使用 THEAD、TFOOT 和 TBODY 元素, 分别。这种划分使用户代理能够支持滚动 独立于表头和表脚的表体。 当长 表打印,表头和脚信息可能是 在包含表格数据的每个页面上重复。

如果这不起作用,则浏览器供应商没有正确实施标准。

【讨论】:

    猜你喜欢
    • 2012-03-08
    • 1970-01-01
    • 2016-04-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-11
    相关资源
    最近更新 更多