Pdfkit e wkhtmltopdf in Ruby on Rails

<%= stylesheet_link_tag “pdf”, :media => ‘all’ %>

Di recente ho provato a convertire una pagina html in un pdf, per farlo tra le tante soluzioni ho pensato di usare forse la più semplice, ovvero PDFkit;

Per installarlo digitiamo da terminale:

$ gem install pdfkit

Una volta installato,PDFkit genererà un PDF puntando ad file o ad un sito web; basterà infatti agiungere all’URL .pdf per ottenere il nostro pdf.

Per prima cosa aggiungiamo un riferimento a PDFkit nella nostra applicazione. Dal momento che stiamo parlando di Rails 3, modifichiamo il Gemfile come segue:

gem ‘pdfkit’

Poi, per assicurarci che il gem venga installato,lanciamo:

$ boundle install

Aggiungiamo ora il middleware  nel file /conf/application.rb,modifichiamo il file affinchè l’applicazione usi middleware PDFkit:

require File.expand_path(‘../boot’, __FILE__)

require ‘rails/all’

# Auto-require default libraries and those for the current Rails environment.
Bundler.require :default, Rails.env

module Store
class Application < Rails::Application
config.middleware.use “PDFKit::Middleware”, :print_media_type => true
end
end

Per vedere quali middleware sta usando la nostra applicazione, lanciamo il comando rake middleware da terminale così da sincerarci che PDFkit sia nella lista dei middleware:


PDFkit::Middleware è presente nell’elenco, per cui possiamo andare avanti.

Poi registriamo un pdf mimetype in config/initializers/mime_types.rb

Mime::Type.register_alias “application/pdf”, :pdf

Inoltre ricordo che PDFkit dipende da wkhtmltopdf

Per installare wkhtmltopdf digitiamo nel terminale:

Opzione1:

# wkhtmltopdf-binary gem

$ sudo gem install wkhtmltopdf-binary # rvmsudo se usi rvm    o
gem ‘wkhtmltopdf-binary’ # nel Gemfile

Testare l’installazione di wkhtmltopdf
$ wkhtmltopdf –help

Opzione 2:

$ sudo apt-get install wkhtmltopdf #ubuntu/debian

Per installare la versione statica invece:

# http://code.google.com/p/wkhtmltopdf/downloads/list
# from http://www.linkme.com.au/ui/unregistered/blogs/BlogPost.aspx?postId=72fc2553cfe3454bb11c00c16c583638
sudo aptitude install openssl build-essential xorg libssl-dev

#for 64bits OS
$ wget http://wkhtmltopdf.googlecode.com/files/wkhtmltopdf-0.9.9-static-amd64.tar.bz2
$ tar xvjf wkhtmltopdf-0.9.9-static-amd64.tar.bz2
$ chown root:root wkhtmltopdf-amd64
$ mv wkhtmltopdf-amd64 /usr/bin/wkhtmltopdf

#for 32bits OS
$ wget http://wkhtmltopdf.googlecode.com/files/wkhtmltopdf-0.9.9-static-i386.tar.bz2
$ tar xvjf wkhtmltopdf-0.9.9-static-i386.tar.bz2
$ chown root:root wkhtmltopdf-i386
$ mv wkhtmltopdf-i386 /usr/bin/wkhtmltopdf

Infine non ci resta che definire il foglio di stile associato, andiamo su /application/views/layouts/application.html.erb

<%= stylesheet_link_tag “pdf”, :media => ‘all’ %>

Creiamo il css associato in /public/stylesheets/pdf.css, inserendo il seguente codice:

@media print {
body { background-color: #FFF; }
#container {
width: auto;
margin: 0;
padding: 0;
border: none;
}
}

A questo punto il gioco è fatto,non ci resta che aggiungere .pdf nel nostro url per ottenere un bel pdf.

Tothebit

About Tothebit

Tothebit

How to whitelist website on AdBlocker?

How to whitelist website on AdBlocker?

  1. 1 Click on the AdBlock Plus icon on the top right corner of your browser
  2. 2 Click on "Enabled on this site" from the AdBlock Plus option
  3. 3 Refresh the page and start browsing the site