打印 HTML: 无法在第 2 页放置 DIV

Printing HTML: Can't place DIVs on page 2

我正在构建一个专门用于打印的 HTML 页面。我想将文本框 (DIV) 准确地放置在打印报告中客户想要的位置。

挑战:

听起来很简单,对吧?

我想出了以下 HTML 代码,但它包含一个问题。 在第 2 页上,打印的框只比第 1 页高一点点。您可以在打印预览中发现问题。这个问题出现在我尝试过的每个浏览器中......所以我什至不能责怪浏览器!

有什么想法吗?

这是我的尝试:

<!DOCTYPE html>
<html>
<head>
    <style>

        @page {
            margin: 0mm;
        }

        .box {
            position: absolute;
            left: 1in;
            top: 1in;
            width: 1in;
            height: 1in;
            background-color: gray;
            overflow:hidden;
        }

        .page {
            page-break-after: always;
            position: relative;
            height: 297mm;
            width:210mm;
        }
    </style>
</head>
<body>


<div class="page" id=page1">
    <div class="box">this box is placed properly.</div>
</div>

<div class="page" id=page2">
    <div class="box">this box is just a bit too high!</div>
</div>

</body>

body 上有默认边距,在我的浏览器中它是 8px,因此您应该将其更改为:

body {
    margin: 0px;
}

现在顶部位置相同,但我的浏览器在末尾显示了一个额外的页面,您可以采取一些技巧来摆脱它:

.page {
    border: 1px solid transparent;
}

另请参阅:HTML default body margin, how to avoid extra blank page at end while printing?