Prawn+
Table of Contents
- Features
- Requirements
- Setup
- Usage
- 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
Type the following to install:
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:
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:
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!
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
Copyright 2012 Alchemists. Read LICENSE for details.
History
Read CHANGES for details. Built with Gemsmith.
Credits
Developed by Brooke Kuhlmann at Alchemists.