制表符将多个表合并为一个pdf

时间:2020-07-24 23:31:39

标签: javascript jspdf tabulator jspdf-autotable

我正在使用http://tabulator.info/在单个HTML文档页面上生成多个表。

当我通过按钮触发pdf下载时,应生成一个pdf文档,其中包括该文档中的表格。 到目前为止,下载单个表是可行的,但是我不知道在jsPDF完成之前如何潜在地向文档中添加更多表。

到目前为止,我已经尝试过的是,在触发lastTable1 = doc.lastAutoTable的下载时,我在documentProcessing函数中抓住了table1对象。计划是将其传递到table2.download()并通过autoTable: function(doc){doc.autoTable(lastTable1)}添加。

虽然我确实使用这种方法抓取了一个对象,但是我不能用它来重建自动表对象(例如doc.autoTable(lastTable1)不会再产生相同的表)。

我准备了一个简单的jsfiddle,在其中生成了两个表和一个下载按钮。只是为了说明无法重建自动表对象,在创建pdf之前,我再次将其添加到doc中。

1 个答案:

答案 0 :(得分:0)

制表符没有内置的方法来执行此操作。

但是好消息是添加一些东西来自己处理应该很容易。

This Issue显示了如何使用jsPDF将PDF合并到同一文档中。

您可以使用制表器中内置的 downloadReady 回调来拦截从每个表创建的PDF文件,然后使用上述问题中概述的方法将它们组合在一起

var table = new Tabulator("#example-table", {
    downloadReady:function(fileContents, blob){
        //fileContents - the unencoded contents of the file
        //blob - the blob object for the download

        mergeWithPreviousPDFs(blob); // call a function based on the previous issue that merges the new PDF with the previous PDF's

        return blob; //must return a blob to proceed with the download, return false to abort download
    }
});

如果您从此回调中返回 false ,则不会触发下载,因此您可以拦截除最终表以外的所有PDF输出,以防止下载,然后返回最后一张表的组合输出触发下载。