故事:我们正在使用 gotenberg 将 HTML 转换为 PDF。这是一个发票用例,因此很明显,项目列表可能会延伸一页。在这样的多页场景中,我希望每个页面都有一个页脚。
怎么了?在生成多页pdf时,内容(即项目列表)与固定页脚重叠。此外,页脚仅出现在第一页上,其余页面为空。
我尝试了什么?我尝试注入一些 JS 来动态计算项目的高度并操作 DOM 以插入换行符和页脚。
代码:
<script>
window.addEventListener('DOMContentLoaded', function () {
const testElement = document.getElementById('tests');
testElement.addEventListener('load', function () {
console.log('sahil')
})
let nodesFragment = document.createDocumentFragment();
//copy of the children in context
const testItems = [...testElement.children];
console.log(testItems);
const divEnd = document.createElement('div');
divEnd.className = 'footer-find'
const breakHeight = 10;
let heightCounter = 0;
nodesFragment.appendChild(testElement.firstChild);
for (let i=0; i < testItems.length; i++) {
heightCounter += testItems[i].clientHeight;
nodesFragment.appendChild(testItems[i]);
if (heightCounter >= breakHeight) {
// if height of elements is greater than the specified breakHeight put an element
nodesFragment.appendChild(divEnd);
heightCounter = 0;
}
}
nodesFragment.appendChild(testElement.lastChild);
testElement.replaceWith(nodesFragment, testElement);
document.getElementsByClassName('invoice-datetime')[0].innerHTML = "heey";
})
window.removeEventListener("DOMContentLoaded", window)
</script>
这种方法显然失败了,因为模板本身没有列表内容。
有解决方法吗?