从动态创建的表(div)创建一个多页PDF,该表大于单个页面

时间:2015-03-20 21:43:04

标签: php jquery mysql css jspdf

我使用php和mysql动态创建一个包含div的表,然后使用jsPDF打印它。这一切都很好,直到桌子超过一页。然后,我得到的只是第一页。我花了几周,几个小时的阅读,尝试和测试,并且不能让它打印超过第一页。

以下是我所拥有的:

<!-- jsPDF Scripts -->
<script src="//mrrio.github.io/jsPDF/dist/jspdf.debug.js"></script>
<script src="//html2canvas.hertzen.com/build/html2canvas.js"></script>

$(document).ready(function() {

        $("#pdfDiv").click(function() {

            var pdf = new jsPDF('p','pt','letter');


            pdf.addHTML($('#rentalListCan').first(), function() {
                pdf.save("rentals.pdf");
            });
        });
    });

我已尝试直接打印页面,但格式不存在。

我使用@pagepage-break-inside: auto尝试使用css,但它并没有创建分页符。谢谢你的帮助。

1 个答案:

答案 0 :(得分:1)

要解决您的问题,我知道有两种方法 -

  1. 为要拆分的页面提供选项

    options = {       pagesplit:是的    };

    然后 -

    pdf.addHTML($('#someDiv'), marginX,  marginY, options, function() {
        pdf.save("doc.pdf");
    });
    
  2. 请注意,这可能会严重分割您的表格(尝试它并且您会看到) - 您可以做的一件事是在行之间添加空白区域,这些行在将页面打印为pdf之前就会被拆分。 发生这种情况是因为fromHTML()将表转换为画布,然后根据pdf的页面大小拆分画布。

    1. 使用这样的插件 - https://github.com/Prashanth-Nelli/jsPdfTablePlugin
    2. 但此处不支持以样式自定义表格。但您可以自定义字体和颜色。如果你的表很简单,它就是一个很棒且易于使用的插件。

      希望这有帮助!