如何防止文本/数据与打印的固定页脚重叠?

时间:2019-03-12 10:16:41

标签: html css pdf

我正在尝试使用spatie / browsershot生成带有动态数据的pdf报告,并且需要在所有页面上保留页脚(位置:固定)。

问题在于,在许多情况下,文本会使文档溢出并到达页脚部分。假设280mm的页面和页脚为40mm,我需要一种方法来禁止页面内容跨越240mm。我尝试了多种方法,使用计算出的DOM元素高度和顶部,并根据元素在文档中的位置添加边距。但是这些都不是完美的。

   // for one page break i.e. added margin, on each page
   var pageBreakAdded = 0;

   Array.from(document.getElementsByClassName('do-not-overlap')).forEach(function(el){

    var dims = el.getBoundingClientRect();
    var top = dims.top;
    var height = dims.height;

    var elementEndsAt = top + height;

    // assuming page breaks at 1500px 
    if(top < 1500){
        if(elementEndsAt > 1440 && pageBreakAdded < 1440){
            pageBreakAdded = 1440;
            addMarginBottom(el, 1500 - top);
        }
    }else if(top < 3000){
        if(elementEndsAt > 2940 && pageBreakAdded < 2940){
            pageBreakAdded = 2940;
            addMarginBottom(el, 3000 - (top));
        }
    }else if(top < 4500){
        if(elementEndsAt > 4440 && pageBreakAdded < 4440){
            pageBreakAdded = 4440;
            addMarginBottom(el, 4500 - (top));
        }
    }else if(top < 6000){
        if(elementEndsAt > 5940 && pageBreakAdded < 5940){
            pageBreakAdded = 5940;
            addMarginBottom(el, 6000 - (top));
        }
    }
   });

这是我用于计算头寸和增加边距的代码。 怎么了还有其他方法吗?我可以在@page页边空白中插入内容吗?有什么吗?

P.S。无法将所有CSS px更改为mm,这可能会太大。

0 个答案:

没有答案