9

I'm following this tutorial to create a pdf file using prawn gem, and I found this reference documentation to generate a table.

How do I set the header row and the header titles to each column?

invoiceData = [["foo","bar"]]
pdf.table(invoiceData) do |table|
table.rows(1..3).width = 72
end
Brian Tompsett - 汤莱恩
  • 5,753
  • 72
  • 57
  • 129
Mr_Nizzle
  • 6,644
  • 12
  • 55
  • 85
  • Disclaimer: This doesn't answer your question. I have turned HTML to PDF with Wkhtmltopdf. WAY easier, though there is a bit configuration to get it set up. I think I read about a gem being available that uses it. Maybe that simplifies the config. I think it's worth checking out. – revdrjrr Apr 15 '11 at 15:45

3 Answers3

11

If you pass :header => true as an option it should use the first row of your array as a repeating header. From the docs:

data = [["This row should be repeated on every new page"]]
data += [["..."]] * 30
table(data, :header => true)
dogenpunk
  • 4,332
  • 1
  • 21
  • 29
  • Also, try the new "self documenting manual". It's a bit more illustrative than the rdoc. [pdf manual](http://cloud.github.com/downloads/sandal/prawn/manual.pdf) – dogenpunk Apr 15 '11 at 16:25
  • If you look at page 85 (I think) in the pdf manual it appears to be working with column headers. I haven't had the chance to actually try it myself yet. – dogenpunk Apr 15 '11 at 17:07
2

In addition to the answer of @dogenpunk, it is also possible to set the styling of the header row:

table_data = generate_lots_of_table_data
table_data.unshift %w(id name address) # add headers

table(table_data, header: true) do
  row(0).style font_style: :bold # header style
end
zwippie
  • 15,050
  • 3
  • 39
  • 54
1

this works for me:

pdf.table data, :headers => ['foo', 'bar']
agf
  • 171,228
  • 44
  • 289
  • 238