14

How do I set the font size in a PDF table using the prawn gem?

When I call prawn like the following:

pdf = Prawn::Document.new(:page_size => 'LEGAL', :page_layout => :landscape)
pdf.table data, 
    :header => true,
    :column_widths => widths,
    :font_size => 7,
    :row_colors => ["EEEEEE", "FFFFFF"]

I get an NoMethodError

undefined method `font_size=' for #<Prawn::Table:0x6ce37ea4>

When I remove the ":font_size => 7", it renders but I get an undesirable font size.

I am using prawn 0.12.0, ruby 1.9.3p194, and Rails 3.1.9.

fkoessler
  • 6,932
  • 11
  • 60
  • 92
Marlin Pierce
  • 9,931
  • 4
  • 30
  • 52

3 Answers3

24

You have to apply the size property to the cell text directly. Here is how to do this:

pdf.table data, 
  :header => true,
  :column_widths => widths,
  :cell_style => { size: 7 },
  :row_colors => ["EEEEEE", "FFFFFF"]

Source: http://prawn.majesticseacreature.com/manual.pdf

siekfried
  • 2,964
  • 1
  • 21
  • 36
4

:font_size => 7 not works.

The correct way is :size => 7

    pdf = Prawn::Document.new(:page_size => 'LEGAL', :page_layout => :landscape)
    pdf.table data, 
    :header => true,
    :column_widths => widths,
    :size => 7,
    :row_colors => ["EEEEEE", "FFFFFF"]
lstefani
  • 385
  • 2
  • 5
0
pdf.table(data) do
  style row(0), :font_size => 7
end

I believe for 0.12.0 you could also use something like this:

table([[ {:font_size => 7 } ]])

https://github.com/prawnpdf/prawn/wiki/CHANGELOG

Ryan Rich
  • 11,637
  • 8
  • 22
  • 31
  • 1
    First example (block) raises NoMethodError "undefined method `font_size=' for #" – Marlin Pierce Jul 17 '13 at 16:31
  • 2
    Try size= instead of font_size=. "style row(0), :font_size => 7" does not work, but "style row(0), :size => 7" does work in more recent versions of Prawn. – Alric Mar 08 '14 at 18:21