11

我被要求在 html 网页的每个页面底部打印一个页脚(不是浏览器上的实际页面)。大家知道有什么办法吗?(它应该在 IE 上工作,只要 IE 就可以了)

我尝试使用固定底部,但内容与页脚重叠。

我尝试使用 javascript 来计算空间并给一个空的 div 高度:如果底部的页脚 % 页面高度 !=0,则添加必需的间隙。但是页脚底部的值和所需的空白似乎随着元素类型的变化而变化。

var printPageHeight = 1900; 
var mFooter = $("#footer-nt");
var bottomPos = mFooter.position().top + mFooter.height();


var remainingGap = (bottomPos <printPageHeight ) ? (printPageHeight -bottomPos) :       printPageHeight - (bottomPos % printPageHeight );


$("#whiteSpaceToPositionFooter").css("height", remainingGap+"px");

我尝试使用表格,适用于所有页面,除了最后一个。

我尝试了很少的其他边距和此类调整,但它们也不起作用。

如果可能的话,我实际上希望页脚仅显示在打印输出的最后一页的底部。

4

2 回答 2

12

我正在回答我自己的问题,以防万一其他人需要解决方案。

经过长时间的研究和深入的尝试(主要是反复试验),我使用以下逻辑将页脚仅设置在最后一页的底部:-

  1. 在 css 中:@media print { 位置:固定;顶部:0;左:0;z-index -1; } Ad IE 显示在每个页面的底部,并通过 z-index 发送到后台。

  2. 尽管如此,IE中文本的背景在打印输出时是透明的,因此文本位于页脚顶部。因此,在绝对左上角位置使用 1px x 1px 的白色图像作为图像的背景。

  3. 使用 javaScript 将图像的高度和宽度设置为与包含内容的 div 的高度相同。

html:

<body>
    <div id="wrapper"> <!-- not necessary -->
        <img scr="./img/white.png" id="whiteBg" />
        <div id="content">
            <!-- content here -->
        </div>
    </div>
    <div id="footer">
    </div>
</body>

CSS:

@media screen {
    #whiteBg {
        display: none;
    }
}

@media print {
   #whiteBg {
      display: block;
      position: absolute;
      top: 0;
      left: 0;
      z-index: -1; //to send it to the background
   } 
   #wrapper {
      padding-bottom: (the size of the footer, to make footer visible on last page).
   }
   #footer {
     position: fixed;
     bottom: 0;
   }
}

jQuery:

 @('#whiteBg').height(  $('#content')).height()  );

为了在每一页的底部获得页脚,我使用了:(第二个场景)

CSS:

@media print {
   #footer {
     position: fixed;
     bottom: 0;
   }
   body {
     margin: x x y x; (y should reflect the height of the footer);
}
于 2013-07-08T04:20:46.000 回答
4

也许是这样的?

<link rel="stylesheet" href="print.css" type="text/css" media="print" /> /* this css file is only for printing purposes*/

body:after {
   content: "I am the footer";
}

使用文档末尾的最后一个元素而不是正文...

于 2013-07-05T07:31:48.643 回答