9

我正在使用 jsPDF Auto Table 从表格中获取 html 内容并显示在 jsPDF 文档中以进行导出,但无论我尝试什么,似乎都无法获得我想要的列宽的中断/换行。

理想情况下,希望表格和列自动计算其宽度,长列内容包含多行,类似于此处的“long:overflow linebreak”示例:https ://simonbengtsson.github.io/jsPDF-AutoTable/#长

尽管我使用的是示例中的相同代码,但生成方式不同。

exportGraph = function () {
    var doc = new jsPDF();
    var elem = document.getElementById("basic-table");
    var res = doc.autoTableHtmlToJson(elem);

    doc.autoTable(res.columns, res.data, {
        startY: 15,
        margin: { horizontal: 0 },
        bodyStyles: { valign: 'top' },
        styles: { overflow: 'linebreak', columnWidth: 'wrap' },
        columnStyles: { text: { columnWidth: 'auto' } }
    });

    doc.save('test.pdf');
};

jsfiddle 示例

任何帮助将不胜感激,因为这现在变得非常令人沮丧!

4

3 回答 3

10

示例中的text键是对示例数据中数据键的引用。当您使用该autoTableToHtml函数时,您的数据键将基于整数,因此您columnStyles应该像这样:

columnStyles: {
  2: {
    columnWidth: 'auto'
  }
}
于 2017-04-03T19:12:00.980 回答
2

columnWidth在较新的版本中已弃用。它被重命名为cellWidth

  columnStyles: {
      2: {
        cellWidth: 'auto'
      }
    }
于 2020-03-09T10:10:35.967 回答
0

columnWidth 在较新的版本中已弃用。它被重命名为 cellWidth。

columnStyles: {
  2: {
    cellWidth: 'auto'
  }
}

错误:未定义自动

于 2021-07-29T18:22:35.850 回答