我们使用jsPDF + html2canvas Javascript库将HTML导出为PDF,而无需本机浏览器支持。我们的一些大型企业客户使用的浏览器没有“打印到PDF”功能。
当前的解决方案非常有效,它创建了一个带有“overflow:hidden”的容器DIV元素,并定位了导出的HTML,这样只有1页可见,因为我们确切地知道页面宽/高的像素数应该是,然后我们使用库来导出视图,然后通过向下滚动重新定位下一页的内容(实际上我们使用负上边距,因为html2canvas不尊重“scrollTop”属性)。
但问题是,此解决方案在页面边界处理不佳。图像和文本将在中间剪切,然后在下一页继续。最终结果看起来很奇怪,但至少没有什么遗漏。
有没有办法以这样的方式准备这个HTML,使它在边界上表现得很好?我被赋予了一个HTML元素,当放入pageWidth
像素宽的元素时,需要将其切割成精确pageHeight
像素高的片段。我可以用任何我想要的方式修改HTML,b
我觉得应该有一些解决方案,因为我注意到使用Chrome上的原生PDF打印解决了这个问题,因为输出看起来很好 - 它以某种方式移动图像,因此它不会被切断。
以下是我创建的示例JS,它演示了我的代码将如何创建多个页面。