首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >自动表生成一个带有空单元格的PDF表。

自动表生成一个带有空单元格的PDF表。
EN

Stack Overflow用户
提问于 2016-10-18 12:25:17
回答 1查看 2.9K关注 0票数 0

我想从HTML表下面生成一个pdf,我使用来实现它。我得到了一个PDF,如下图所示。该表由未包含任何数据的正确行数组成。如何生成本表的pdf?我还在这张桌子上使用Datatable.js。

下给出的HTML表标记和Javascript。

代码语言:javascript
运行
复制
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"> </script>
<script src="https://github.com/MrRio/jsPDF/blob/master/dist/jspdf.debug.js"> </script>
<script src="https://github.com/simonbengtsson/jsPDF-AutoTable/blob/master/dist/jspdf.plugin.autotable.src.js"> </script>

// this function generates the pdf using the table
function generate() {
  var columns = ["productid", "productname", "unit", "unitprice"];
  var data = tableToJson($("#products-table").get(0), columns);
  var doc = new jsPDF('p', 'pt');
  doc.autoTable(columns, data);
  doc.save("table.pdf");
}

// This function will return table data in an Array format
function tableToJson(table, columns) {
  var data = [];
  // 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[columns[j]] = tableRow.cells[j].innerHTML;
    }
    data.push(rowData);
  }
  return data;
}
代码语言:javascript
运行
复制
<table id="products-table" cellspacing="0" width="100%">
    <thead>
      <tr>
        <th>ProductId</th>
        <th>ProductName</th>
        <th>Unit</th>
        <th>UnitPrice</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td>1</td>
        <td>2</td>
        <td>3</td>
        <td>4</td>
      </tr>
      <tr>
        <td>1</td>
        <td>2</td>
        <td>3</td>
        <td>4</td>
      </tr>
      <tr>
        <td>1</td>
        <td>2</td>
        <td>3</td>
        <td>4</td>
      </tr>
      <tr>
        <td>1</td>
        <td>2</td>
        <td>3</td>
        <td>4</td>
      </tr>
    </tbody>
  </table>

  <a href="#" onclick="generate()" id="generate-report-button" class="btn">Run Code</a>

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-10-18 13:32:48

这是因为您正在从表数据创建对象。您应该根据数据创建一个数组。

代码语言:javascript
运行
复制
function tableToJson(table, columns) {
  var data = [];
  // go through cells
  for (var i = 1; i < table.rows.length; i++) {
    var tableRow = table.rows[i];

    // create an array rather than an object
    var rowData = [];
    for (var j = 0; j < tableRow.cells.length; j++) {
        rowData.push(tableRow.cells[j].innerHTML)
    }
    data.push(rowData);
  }

  return data;
}

检查工作小提琴https://jsfiddle.net/shakee93/dh8e7gjc/

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40108219

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档