my current Work Stack

  • iOS Objective-C
  • Ruby
  • Mongo
  • Rails/Sinatra
  • jQuery
  • Capistrano
  • Passenger
  • Apache.Nginx
  • Heroku
  • Nodejs
last edited 02.10.2012

here's all my posts so far

02/10 Using the Facebook SDK in an IOS Static Library
04/11 Managing Development or Sometimes work gets in the way of work
12/21 Git Stash: For when your boss|clients|life priorities change
12/09 Picker Fields in Titanium
11/30 An Update on Raphael JS and Charts
10/08 How to make a Native App Form that doesn't suck with Titanium
09/23 Notification Subscriptions in Gowalla
09/21 Developing an API in Rails
08/26 I was promised Event Driven APIs and hoverboards. Where are my hoverboards?
08/14 A Node.js wrapper for Gowalla
08/09 Phusion Passenger Tweaking: Apache stuck in Sending(W)
06/28 HTML 5 is here and breaking old hacks we should have never done!
06/26 Simple PDFkit example in Rails 3
06/23 Raphael.serialize
06/12 Serializing RaphaelJS
06/11 Rails 3 beta4 destroyed my Tie Fighter
05/21 Rails 3 and Shoulda
05/13 Using yaml to configure default options for Paperclip
05/07 It's OK to not be pretentious
04/23 Snippet #1
04/21 I Need Closure
04/16 The Good and Bad of Github
04/08 Fun with Beards, or at least mine

here's some tweets I made

Simple PDFkit example in Rails 3

I couldn't find a good example of using PDFkit in rails, so I figured it out and am now making one.

1
2
3
gem 'pdfkit' # add in Gemfile

bundle install

Also register a pdf mimetype in config/initializers/mime_types.rb (Thanks to ravi for pointing this out)

1
Mime::Type.register_alias "application/pdf", :pdf

Here's what I do in my controller:

1
2
3
4
5
6
7
8
9
10
respond_to do |format|
  format.html
  format.pdf {
    html = render_to_string(:layout => false , :action => "show.html.haml")
    kit = PDFKit.new(html)
    kit.stylesheets << "#{Rails.root}/public/stylesheets/screen.css"
    send_data(kit.to_pdf, :filename => "labels.pdf", :type => 'application/pdf')
    return # to avoid double render call
  }
end

It's pretty simple. The main thing I had to do was specify the format as html in the render_to_string call. You could make a show.pdf.haml I guess, but we're converting html to pdf so why duplicate the view?

blog comments powered by Disqus