Class Prawn::Table
In: lib/prawn/table.rb
lib/prawn/table/cell.rb
Parent: Object

This class implements simple PDF table generation.

Prawn tables have the following features:

  * Can be generated with or without headers
  * Can tweak horizontal and vertical padding of text
  * Minimal styling support (borders / row background colors)
  * Can be positioned by bounding boxes (left/center aligned) or an
    absolute x position
  * Automated page-breaking as needed
  * Column widths can be calculated automatically or defined explictly on a
    column by column basis
  * Text alignment can be set for the whole table or by column

The current implementation is a bit barebones, but covers most of the basic needs for PDF table generation. If you have feature requests, please share them at: groups.google.com/group/prawn-ruby

Tables will be revisited before the end of the Ruby Mendicant project and the most commonly needed functionality will likely be added.

Methods

draw   new   width  

Included Modules

Prawn::Configurable

Classes and Modules

Class Prawn::Table::Cell

Public Class methods

Creates a new Document::Table object. This is generally called indirectly through Document#table but can also be used explictly.

The data argument is a two dimensional array of strings, organized by row, e.g. [[“r1-col1”,“r1-col2”],[“r2-col2”,“r2-col2”]]. As with all Prawn text drawing operations, strings must be UTF-8 encoded.

The following options are available for customizing your tables, with defaults shown in [] at the end of each description.

:headers:An array of table headers, either strings or Cells. [Empty]
:align_headers:Alignment of header text. Specify for entire header (:left) or by column ({ 0 => :right, 1 => :left}). If omitted, the header alignment is the same as the column alignment.
:header_text_color:Sets the text color of the headers
:header_color:Manually sets the header color
:font_size:The font size for the text cells . [12]
:horizontal_padding:The horizontal cell padding in PDF points [5]
:vertical_padding:The vertical cell padding in PDF points [5]
:padding:Horizontal and vertical cell padding (overrides both)
:border_width:With of border lines in PDF points [1]
:border_style:If set to :grid, fills in all borders. If set to :underline_header, underline header only. Otherwise, borders are drawn on columns only, not rows
:border_color:Sets the color of the borders.
:position:One of :left, :center or n, where n is an x-offset from the left edge of the current bounding box
:width:A set width for the table, defaults to the sum of all column widths
:column_widths:A hash of indices and widths in PDF points. E.g. { 0 => 50, 1 => 100 }
:row_colors:Used to specify background colors for rows. See below for usage.
:align:Alignment of text in columns, for entire table (:center) or by column ({ 0 => :left, 1 => :center})

Row colors (:row_colors) are specified as HTML hex color values, e.g., “ccaaff”. They can take several forms:

  • An array of colors, used cyclically to “zebra stripe” the table: ['ffffff', 'cccccc', '336699'].
  • A hash taking 0-based row numbers to colors: { 0 => 'ffffff', 2 => 'cccccc'}.
  • The symbol :pdf_writer, for PDF::Writer’s default color scheme.

See Document#table for typical usage, as directly using this class is not recommended unless you know why you want to do it.

Public Instance methods

Draws the table onto the PDF document

Width of the table in PDF points

[Validate]