在过去的两天里,我一直在为使用jsPDF生成PDF设置列宽。我能够使用jsPDF lib从html表生成pdf,但我遇到了重叠列的问题。因为我想在工作表中显示20列。我已经改变了选项纵向横向和设置宽度5000在出口脚本选项以及html表格宽度。请帮助我,从jsPDF设置pdf列宽。谢谢
qcuzuvrc1#
我有同样的问题4天前,并能够解决它..我提供了下面的示例代码供您了解。我假设要求是将一个html表(下面提到的table 1,有3行或更多行)导出为PDF格式。为此,我们将设置单元格/列宽度,以及3行以上的字体和字体类型。第一行将是标题-因此应用粗体。我已经应用了不同的风格为第二和第三行了解可用的风格。如果你想为每一列应用不同的列宽-你也可以这样做。希望下面的代码是可读的和自我解释的。如果你有什么问题就告诉我
$(document).on("click", "#btnExportToPDF", function () { var table1 = tableToJson($('#table1').get(0)), cellWidth = 35, rowCount = 0, cellContents, leftMargin = 2, topMargin = 12, topMarginTable = 55, headerRowHeight = 13, rowHeight = 9, l = { orientation: 'l', unit: 'mm', format: 'a3', compress: true, fontSize: 8, lineHeight: 1, autoSize: false, printHeaders: true }; var doc = new jsPDF(l, '', '', ''); doc.setProperties({ title: 'Test PDF Document', subject: 'This is the subject', author: 'author', keywords: 'generated, javascript, web 2.0, ajax', creator: 'author' }); doc.cellInitialize(); $.each(table1, function (i, row) { rowCount++; $.each(row, function (j, cellContent) { if (rowCount == 1) { doc.margins = 1; doc.setFont("helvetica"); doc.setFontType("bold"); doc.setFontSize(9); doc.cell(leftMargin, topMargin, cellWidth, headerRowHeight, cellContent, i) } else if (rowCount == 2) { doc.margins = 1; doc.setFont("times "); doc.setFontType("italic"); // or for normal font type use ------ doc.setFontType("normal"); doc.setFontSize(8); doc.cell(leftMargin, topMargin, cellWidth, rowHeight, cellContent, i); } else { doc.margins = 1; doc.setFont("courier "); doc.setFontType("bolditalic "); doc.setFontSize(6.5); doc.cell(leftMargin, topMargin, cellWidth, rowHeight, cellContent, i); // 1st=left margin 2nd parameter=top margin, 3rd=row cell width 4th=Row height } }) }) doc.save('sample Report.pdf'); }) function tableToJson(table) { var data = []; // first row needs to be headers var headers = []; for (var i=0; i<table.rows[0].cells.length; i++) { headers[i] = table.rows[0].cells[i].innerHTML.toLowerCase().replace(/ /gi,''); } // go through cells for (var i=1; i<table.rows.length; i++) { var tableRow = table.rows[i]; var rowData = {}; for (var j=0; j<tableRow.cells.length; j++) { rowData[ headers[j] ] = tableRow.cells[j].innerHTML; } data.push(rowData); } return data; }
1条答案
按热度按时间qcuzuvrc1#
我有同样的问题4天前,并能够解决它..我提供了下面的示例代码供您了解。
我假设要求是将一个html表(下面提到的table 1,有3行或更多行)导出为PDF格式。为此,我们将设置单元格/列宽度,以及3行以上的字体和字体类型。
第一行将是标题-因此应用粗体。我已经应用了不同的风格为第二和第三行了解可用的风格。如果你想为每一列应用不同的列宽-你也可以这样做。
希望下面的代码是可读的和自我解释的。如果你有什么问题就告诉我