Ezprint
Ezprint is a drop in replacement for the princely plugin. It uses PDFKit as the backend instead of princexml, possibly saving you millions of dollars. I recommend using the Rack middleware component of PDFKit to print PDFs in rails, but this plugin makes an easy transition from prince->PDFKit for those using princely.
Installation
Version 1.0.0 deprecates support for Rails 2. For Rails 2.x support, install an earlier version.
gem ‘ezprint’ then run “bundle install”
Example
The examples here are similar to princely, since the plugin is basically a reworking of the princely source
class PDFExample < ApplicationController
def show
respond_to do |format|
format.html
format.pdf do
render :pdf => "My Awesome PDF",
:template => "controller/action.pdf.erb",
:stylesheets => ["application","print"]
:layout => "pdf"
end
end
end
# Alternatively, you can use make_and_send_pdf to
# render out a PDF for the action without a
# respond_to block.
def pdf
make_and_send_pdf("file_name")
end
end
Render Defaults
The defaults for the render options are as follows:
layout: false template: the template for the current controller/action stylesheets: none
Using another PDF processor
While ezprint has been designed with PDFKit in mind, other PDF processors such as princexml can be used. A princexml processor is included and can be used by setting Ezprint.processor = :prince in an initializer.
It’s also easy to create your own processor:
module Ezprint
module Processors
class MyProcessor < Base
def self.process(html_string, = {})
# Code to return a PDF string from an html string here.
end
end
end
end
Possible Gotchas
If you’re getting a “Broken Pipe” error when rendering PDF documents, you may need to install the wkhtmltopdf-binary gem or put it in your Gemfile.
Credits
Michael Bleigh for writing the awesome princely plugin, which most of the code is reworked from.
Resources
Copyright © 2012 Jason Stewart, released under the MIT license.