Project

prawn_plus

0.02
A long-lived project that still receives updates
A Rails renderer for Prawn PDFs.
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
 Project Readme

Prawn+

Gem Version
Alchemists Style Guide
Circle CI Status
Table of Contents
  • Features
  • Requirements
  • Setup
  • Usage
    • Views
    • Controllers
  • Development
  • Tests
  • Versioning
  • Code of Conduct
  • Contributions
  • License
  • History
  • Credits

Features

  • Loads the Prawn gem by default (no Gemfile entry necessary).

  • Registers PDF as a MIME type.

  • Registers a template handler for rendering “.prawn” template view files.

Requirements

Setup

To install, run:

gem install prawn_plus

Add the following to your Gemfile:

gem "prawn_plus"

Usage

Views

Within your views you can craft Prawn templates using Ruby code. For example, assuming there are document resources, then the following structure might exist:

/views/documents/show.html.slim
/views/documents/show.pdf.prawn

The show.html.slim could have a link to the PDF download. Example:

= link_to "PDF Download", action: "show", id: @document.id, format: "pdf"

The show.pdf.prawn file would contain the Prawn syntax for crafting the PDF. A simple example might look like this:

pdf.text "Hello, I'm a PDF!"

…​which would render the following output:

Basic Example

You could also render a more complex PDF with tabular information, for example:

pdf.text "Metals"
pdf.move_down 10
pdf.font_size = 10

data = [
  ["Name", "Atomic Number", "Price"],
  ["Mercury", "80", number_to_currency(10)],
  ["Platinum", "78", number_to_currency(25)],
  ["Titanium", "22", number_to_currency(50)]
]

pdf.table data, header: true, column_widths: [100, 50, 50], row_colors: ["FFFFFF", "E5ECF9"] do
  columns(0).align = :left
  columns(1..2).align = :right
  row(0).text_color = "FFFFFF"
  row(0).background_color = "000000"
  row(0).columns(0..2).font_style = :bold
  row(0).columns(0..2).align = :center
end

…​which would render the following output:

Complex Example

NOTE: The pdf object must always be referenced when making using of the Prawn syntax - it is initialized for you as a Prawn::Document instance.

Controllers

Within your controller, only the respond_to method is required. Example:

class DocumentsController < ApplicationController
  respond_to :pdf

  def show
  end
end

That’s it!

Development

To contribute, run:

git clone https://github.com/bkuhlmann/prawn_plus.git
cd prawn_plus
bin/setup

You can also use the IRB console for direct access to all objects:

bin/console

Tests

To test, run:

bundle exec rake

Versioning

Read Semantic Versioning for details. Briefly, it means:

  • Major (X.y.z) - Incremented for any backwards incompatible public API changes.

  • Minor (x.Y.z) - Incremented for new, backwards compatible, public API enhancements/fixes.

  • Patch (x.y.Z) - Incremented for small, backwards compatible, bug fixes.

Code of Conduct

Please note that this project is released with a CODE OF CONDUCT. By participating in this project you agree to abide by its terms.

Contributions

Read CONTRIBUTING for details.

License

Read LICENSE for details.

History

Read CHANGES for details.

Credits

Engineered by Brooke Kuhlmann.