Class | Prawn::Table
In: | lib/prawn/table/cell.rb lib/prawn/table.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

new(data, document, options={})

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

draw()

Draws the table onto the PDF document

width()

Width of the table in PDF points

[Validate]