使用多个页面为PDF打印准备HTML而不切割图像/文本

时间:2018-06-19 01:13:57

标签: javascript html

我们使用jsPDF + html2canvas Javascript库将HTML导出为PDF,而无需本机浏览器支持。我们的一些大型企业客户使用的浏览器没有“打印到PDF”功能。

当前的解决方案非常有效,它创建了一个带有“overflow:hidden”的容器DIV元素,并定位了导出的HTML,这样只有1页可见,因为我们确切地知道页面宽/高的像素数应该是,然后我们使用库来导出视图,然后通过向下滚动重新定位下一页的内容(实际上我们使用负上边距,因为html2canvas不尊重“scrollTop”属性)。

但问题是,此解决方案在页面边界处理不佳。图像和文本将在中间剪切,然后在下一页继续。最终结果看起来很奇怪,但至少没有什么遗漏。

有没有办法以这样的方式准备这个HTML,使它在边界上表现得很好?我被赋予了一个HTML元素,当放入pageWidth像素宽的元素时,需要将其切割成精确pageHeight像素高的片段。我可以用任何我想要的方式修改HTML,b

我觉得应该有一些解决方案,因为我注意到使用Chrome上的原生PDF打印解决了这个问题,因为输出看起来很好 - 它以某种方式移动图像,因此它不会被切断。

以下是我创建的示例JS,它演示了我的代码将如何创建多个页面。

http://jsfiddle.net/56u9Lxgt/

1 个答案:

答案 0 :(得分:0)

基本上,您必须在添加新内容之前始终检查实际页面大小。

在此链接中的答案: jsPDF multi page PDF with HTML renderer