我对jsPDF autotable有疑问。
我的代码:
$('#printBtn').on('click', function() {
var pdf = new jsPDF('p', 'pt', 'a4');
var res = pdf.autoTableHtmlToJson(document.getElementById("tablePrint"));
pdf.autoTable(res.columns, res.data, {
theme : 'plain',
styles: {
fontSize: 12
},
showHeader: 'never',
createdCell: function(cell, data) {
var tdElement = cell.raw;
if (tdElement.classList.contains('hrow')) {
cell.styles.fontStyle = 'bold';
}
}
});
pdf.save("test.pdf");
});
我希望在div之前和之后添加Text。 我在jsPDF可自动编写的示例中找到了此代码段:
var before = "text before";
pdf.text(before, 14, 30);
此代码效果很好。我在pdf.autoTable(...});之前插入了它。 但我不知道14号和30号是什么?
然后我在pdf.autoTable函数调用之后插入代码,并在pdf的最后一页上打印文本,但是在页面顶部,而不是最后,为什么?
对不起我的坏事。 谢谢你的帮助。
答案 0 :(得分:5)
如果要添加的内容是必须先移动要使用autotable添加的表之前要添加的内容,则可以通过在doc.autotable中添加startY: 150
属性来实现此目的:
pdf.autoTable(res.columns, res.data, {
theme : 'plain',
styles: {
fontSize: 12
},
startY: 150,
showHeader: 'never',
createdCell: function(cell, data) {
var tdElement = cell.raw;
if (tdElement.classList.contains('hrow')) {
cell.styles.fontStyle = 'bold';
}
}
});
150是要移动的像素值。在此上方,您可以将所需的文本与您放置的代码一起放置。
var before = "text before";
pdf.text(before, 14, 30);
现在,值14(Y中的值)和30(Y中的值)是您希望文本以像素为单位移动的值。
要在表格后添加文本,您必须首先获取表格结束的像素数,然后从此处输入所需的文本。
let finalY = pdf.previousAutoTable.finalY; //this gives you the value of the end-y-axis-position of the previous autotable.
pdf.text("Text to be shown relative to the table", 12, finalY + 10); //you use the variable and add the number of pixels you want it to move.
答案 1 :(得分:1)
这是我的回答:
所以这是你的Autotable函数调用:
var pdf = new jsPDF('p', 'pt', 'a4');
由于jsPDF Autotables基于jsPDF,您必须转到here:
pt是一个称为点的度量单位,因此14和30是点。在第一个位置,14,向左和向右移动元素。第二个位置30向下和向上移动元素。我猜它们就像像素(px)。好像你必须使用积分将文本移动到所需的位置。