Prawn-Rails Gem Version


  • prawn > 0.0.12
  • prawn-table
  • Rails 3.0x
  • Ruby > 1.8.7


1.Add to the Rails Gemfile

gem 'prawn-rails'

to the Rails Gemfile prawn and prawn-table is a dependency so no need to mention it in the projects Gemfile but can mention a specific version if your Gemfile, if you want


Create a view with pdf as format and prawn as handler so filename should look like example.pdf.prawn

we provide a helper called prawn_document it builds a PrawnRails::Document with default options. Can override with page_size and page_layout example contents of example.pdf.prawn

prawn_document(:page_layout => :landscape) do |pdf|
  pdf.text "Hello World"

No need to call pdf.render, it is called by prawn_document

Your available to use all prawn document methods like pdf.text pdf.font_size and also block like pdf.font(FONT_NAME,opts) do pdf.XXXX end

If you want to customize the name of the file should a user try to save it, you can specify the filename in your action:

def show
  @filename = 'my_report.pdf'

For more documentation go to the manual

Build in helpers

  • html_strip(html) Removes the html tags from a string

Default configuration

Add a prawn-rails.rb config to your Rails app under config/initializers like this

PrawnRails.config do |config|
  config.page_layout = :portrait
  config.page_size   = "A4"
  config.skip_page_creation = false

by default page_layout is portrait and page_size is "A4" also skip_page_creation is set to false by default, if it is set to true then have to create the first page yourself for eg.

pdf.start_new_page size: "A4", page_layout: :landscape


  1. Hello World


    pdf.text hello world
  2. ** Using Active Record **


    pdf.text "Current Products are"
    pdf.move_down 20
    pdf.table(@products.collect{ |p| [,p.price]})


  1. Add per-render Configuration
  2. Simple Html to PDF ?
  3. Any Other requested

thx to

@rwilliams @sigmike @smber1 @iffyuva

Dev Notes

Gem works with any rails 3.0 version and ruby but for development It should be atlest Rails 3.1 (for the testing env) I'll try to fix that