0

所以... HTML 仍然让我很难过。我有一些代码可以打印出每个成员的订单报告,当我们将它们分发给交付订单的人时必须打印出来。问题是包含分页符的 div 是一大堆奇怪的大小,所以当我尝试打印报告时,格式非常奇怪。这有时会导致打印空白页,或者在两个不同页面的底部和顶部之间拆分顺序。

我想弄清楚如何让每个订单打印在它自己的页面上,就在页面的顶部,但是最后一个 div 没有按照我想要的方式工作。几个星期以来,我一直在尝试解决这个问题;有人能帮我吗?

这是页面的代码:

<style>
.first-time{
    text-align: right;
    color:#fff;
    background: #a00;
}
.page-break {
    display: block;
    page-break-before: always;
}
.title th{
    background: #6c6c6c;
    color:#fff
}
</style>
<script>
</script>
<div class="reports">
<table cellpadding="0" cellspacing="0">
    <?php $count_orders = 0 ?>
    <?php $count_products = 0 ?>
    <?php foreach ($sites as $site): ?>
        <tr>
            <th class="big" colspan="7"><?php echo $site ?></th>
        </tr>
        <?php foreach ($orders as $page_number => $order): ?>
            <?php if ($order['Site']['name'] == $site): ?>
                <tr class="title">
                    <th>First Name</th>
                    <th>Last Name</th>
                    <th>Address</th>
                    <th>City</th>
                    <th>Email</th>
                    <th>Phone</th>
                    <th>Site</th>
                </tr>
                <tr>
                    <td><strong><?php echo $order['Account']['first_name'] ?></strong></td>
                    <td><strong><?php echo $order['Account']['last_name'] ?>&nbsp;<span style="color:red"><?php echo ($order['Account']['homebound'] == 1)?'(homebound)':'';?></span></strong></td>
                    <td><?php echo $order['Account']['street1'].$order['Account']['street2'] ?></td>
                    <td><?php echo $order['Account']['city']?></td>
                    <td><?php echo $order['Account']['email'] ?></td>
                    <td><?php echo $order['Account']['phone'] ?></td>
                    <td><?php echo $order['Site']['name'] ?></td>
                </tr>
                <tr>
                    <th colspan="6">Product</th>
                    <th>Quantity</th>
                </tr>
                <?php foreach ($order['ProductType'] as $productType): ?>
                    <tr>
                        <td colspan="6"><?php echo $productType['type'] ?></td>
                        <td><?php echo $productType['OrdersProductType']['quantity']*$productType['units'] ?></td>
                    </tr>
                    <?php $count_products++ ?>
                <?php endforeach ?>
                <?php foreach ($order['Coupon'] as $coupon): ?>
                    <tr>
                        <td colspan="6">Coupon</td>
                        <td>-<?php echo $coupon['discount'] ?></td>
                    </tr>
                <?php endforeach ?>
                <?php $count_orders++ ?>
                <input class='account-id' href='/Reports/firstTime' data-sale="<?php echo $order['Order']['sale_id'] ?>" type='hidden' name='data[Account][id]' value="<?= $order['Account']['id'] ?>" />
                <tr></tr>
                <tr><td style='border:none; padding:0;'><div class='page-break'></div></td></tr>
             <?php endif ?>
        <?php endforeach ?>
    <?php endforeach ?>
</table>

其中大部分可能会被忽略,但我将其包括在内以防万一,因为我的 HTML 编码经验充其量是最少的。我主要是后端程序员,但是使用此报告的人不了解其中的区别,也不明白为什么我不能像在 Word 中那样添加分页符来修复它...

4

2 回答 2

2

我想你想用

.page-break {
    display: block;
    page-break-after: always;
}

所以它会在每个订单之后打破页面,而不是在那个 div 之前。我可能是错的,尽管尝试并让我知道

于 2013-10-24T19:01:19.543 回答
0

我将继续并结束这个问题。在与我的其他程序员交谈后,我们还没有找到问题的根本原因,但我们通过将表分成两个表来解决它,其中一个只是用于分页符。

我们知道,这是一种糟糕的编码风格。然而,它解决了这个问题,这使我们相信某些东西正在从表格中抓取填充并在分页符后添加它。我无法找到它是什么,但拆分它修复了它。

所以......糟糕的编码,但它得到了修复。对于我们的小公司来说,这已经足够了。感谢您的帮助。

于 2013-10-24T19:51:56.903 回答