Разная ширина для каждого столбца в автоматической таблице jspdf?

В моей таблице 13 столбцов. Как я могу получить разную ширину для каждого столбца? Могу я указать ширину каждого столбца вот так?

стили: {overflow: 'linebreak', columnWidth: [100,80,80,70,80,80,70,70,70,70,60,80,100]},

Синтаксис моей таблицы:

> var res = doc.autoTableHtmlToJson(document.getElementById(tableID)); 
> doc.autoTable(res.columns, res.data, {  styles: {overflow: 'linebreak'
> ,columnWidth: [100,80,80,70,80,80,70,70,70,70,60,80,100]},  startY:
> 60,  bodyStyles: {valign: 'top'},  });

person Abdu Rahiman    schedule 05.08.2016    source источник
comment
Зачем нужно указывать ширину каждого столбца? Не работает ли автоматический расчет ширины в вашем случае?   -  person Simon Bengtsson    schedule 05.08.2016


Ответы (4)


Вам нужно будет преобразовать массив columnWidth, чтобы он выглядел так:

doc.autoTable({
  html: '#table',
  columnStyles: {
    0: {cellWidth: 100},
    1: {cellWidth: 80},
    2: {cellWidth: 80},
    // etc
  }
});

Обратите внимание на использование columnStyles вместо styles.

person Simon Bengtsson    schedule 05.08.2016
comment
Привет, Саймон, это то, что я искал. Спасибо ! - person Abdu Rahiman; 12.08.2016
comment
Только что заметил ошибку в вашем коде, это должно быть columnStyles: { 0: {columnWidth: 60}, 1: {columnWidth: 40}, 2: {columnWidth: 100} // etc } - person Abdu Rahiman; 19.08.2016
comment
Да @Becky! Это было решено. Ваш код тоже работает нормально. - person Abdu Rahiman; 19.08.2016
comment
Привет, сэр, это полезно для меня. Я хочу еще один вариант. Как настроить выравнивание текста столбца по правому краю ??? - person Raja Priyan; 28.04.2017
comment
В новой версии columnWidth является устаревшим, это необходимое изменение в cellWidth. - person Darlan D.; 17.01.2020
comment
У меня есть общая логика для экспорта jspdf, так как есть множество страниц, на которых мне нужна функция экспорта, тогда мне нужно добавлять стили столбцов для каждой страницы? Могу ли я не устанавливать ширину динамически? - person Krunal Shah; 08.07.2021

В предыдущем выпуске (1.3.4) это могло быть следующим образом:

var columns = [
          {title: "Signum", dataKey: "signum"},
          {title: "Name", dataKey: "name"},
          {title: "Role", dataKey: "role"},
          {title: "Location", dataKey: "location"} 
          ]

Но для последней версии 2.3.2 требуется формат ниже

doc.autoTable(colums,data,{
    addPageContent:pageContent,
    margin: {horizontal:5,top: 20},
    startY: 0.47*doc.internal.pageSize.height,
    styles: {overflow: 'linebreak'},
    columnStyles: {
     id: {columnWidth: 25}, 
     name:{columnWidth:40}, 
     role: {columnWidth: 15}, 
     location: {columnWidth: 30}
    }
  });

Это приведет к исправлению только идентификатора, имени, роли и местоположения в указанных пределах. Остальные остальные заголовки будут соответствующим образом скорректированы autotable.js

person Pikesh Prasoon    schedule 17.08.2017
comment
В новой версии columnWidth устарело, это необходимое изменение в cellWidth. - person Darlan D.; 17.01.2020

Скажем, [шаги, методы, процесс, результаты, результаты] - это все мои заголовки таблиц. Если я хочу увеличить или уменьшить средние значения ширины таблицы,

columnStyles: {
    steps: {columnWidth:215},
    Methods: {columnWidth: 60},
    process: {columnWidth: 100},
    Delivers: {columnWidth: 90},
    Result: {columnWidth: 90}
}

Здесь вы можете указать ширину каждого столбца.

person Beckham_Vinoth    schedule 18.08.2016
comment
В новой версии columnWidth устарело, это необходимое изменение в cellWidth. - person Darlan D.; 17.01.2020

По умолчанию "columnsStyles" нет в "Options", необходимо создать их, и на следующем шаге вы определите "columnWidth".

Options['columnStyles'] = {
  0: {columnWidth: 50},
  1: {columnWidth: 'auto'},
  2: {columnWidth: 'wrap'},
  3: {columnWidth: 150}
}
JSPDF.autoTable(columns, values, Options)
person Darlan D.    schedule 22.01.2019
comment
В новой версии columnWidth устарело, это необходимое изменение в cellWidth. - person Darlan D.; 17.01.2020