最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

javascript - pdfmake: How to set the height for all rows? - Stack Overflow

programmeradmin9浏览0评论

I want to set the row height for all the rows in my table. I am currently specifying my styles like this:

table: {
    widths: ['33%', '34%', '33%'],
    heights: [40, 40],
    headerRows: 1,

That works very well if I have a known amount of rows, in this case, the first row and the table header get the height of 40. Everything underneath will fall back to the default height since I didn't specify anything different.

If I, however, have a table with a lot of rows or like in my case a table where the row count is dynamic, it is a tedious task to write each height into the object.

Is there any better way of applying styles to all rows?

I want to set the row height for all the rows in my table. I am currently specifying my styles like this:

table: {
    widths: ['33%', '34%', '33%'],
    heights: [40, 40],
    headerRows: 1,

That works very well if I have a known amount of rows, in this case, the first row and the table header get the height of 40. Everything underneath will fall back to the default height since I didn't specify anything different.

If I, however, have a table with a lot of rows or like in my case a table where the row count is dynamic, it is a tedious task to write each height into the object.

Is there any better way of applying styles to all rows?

Share Improve this question asked Feb 8, 2022 at 9:14 Luke_KSLuke_KS 1833 silver badges16 bronze badges
Add a ment  | 

2 Answers 2

Reset to default 3

You can set the same height for all rows by assigning to "heights" a number instead of an array:

table: {
  widths: ['33%', '34%', '33%'],
  heights: 40, 
  headerRows: 1,
  body: [...]
}

Alternatively, you could dynamically generate an array of the right length in JavaScript. This is more cumbersome, but it would allow you to specify different heights for different rows in a programmatic way.

Look at the playground here for more examples.

You can set padding in top and bottom. It is so handly, you can also set padding for specific row(s).

table: {
    widths: ['33%', '34%', '33%'],
    headerRows: 1,
    body: [...]
}, 
layout: {
    paddingTop: function (i, node) {
      return 5;
      //return (i === node.table.widths.length - 1) ? 5 : 5;
    },
    paddingBottom: function (i, node) {
      return 5;
      //return (i === node.table.widths.length - 1) ? 5 : 5;
    }
}
发布评论

评论列表(0)

  1. 暂无评论