Я пытаюсь создать кучу pdf отчетов с динамическими данными, используя spatie / browsershot, и мне нужно сохранить нижний колонтитул ( position: fixed ) на всех страницах.
Проблема в том, чтово многих случаях текст переполняет документ и попадает в нижний колонтитул.Допустим, что страница в 280 мм и нижний колонтитул 40 мм, мне нужен способ запретить пересечение содержимого страницы 240 мм.Я пробовал несколько способов, используя вычисленную высоту и вершину элемента 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?Что-нибудь?
PS Не могу изменить все CSS px на mm, что было бы слишком большим изменением.