Développeur Web RoR

Aller au contenu | Aller au menu | Aller à la recherche

jeudi 20 octobre 2011

Gem prawn pdf pour rails : enfin une vrai documentation

Vous avez dû remarquer que j'ai récemment écrit quelques posts sur prawn la librairie ruby (et rails) pour générer des documents pdf je suis en train (pour une application) de passer de prawn 0.7.1 à prawn 1.0.0.rc1 et oui il y a du chemin et comme chez prawn ils aiment bien tout changer souvent c'est un peu compliqué, il faut revoir tout son code. Mais voilà une vrai doc est dispo : http://prawn.majesticseacreature.com/manual.pdf

Bon si jamais la doc générée ne fonctionne pas (comme la semaine dernière voici une copie) : prawn pdf documentation

On peut tout faire avec cette dernière version (ah bon j'ai l'air enthousiaste ?), styliser les tableaux comme vous l'avez rêvé (background color d'une cellule particulière, mettre du texte dans le tableau, un image, un texte incliné, bordure padding, height, width), faire une mise en page en colonne... enfin tout quoi. Parcourez la doc il y a plein d'exemples et du rendu correspondant.

Je rappelle que prawn est sous licence GPLv2 et GPLv3.

vendredi 14 octobre 2011

Rails Prawn pdf : undefined method for #<Prawn::Document...>

Bon après quelques temps de recherche dans la doc de prawn sur github et sur majesticseacreature, j'ai trouvé par hasard. 
Donc si vous avez cette erreur :

undefined method `XXX' for #<Prawn::Document...>

Essayez voir de faire :

pdf.bounds.VOTRE_METHODE

Dans mon cas, je voulais ajouter un padding à une bounding_box en fait le padding s'applique à bounds.

J'ai donc changer mon code de :

pdf.VOTRE_METHODE

En :

pdf.bounds.VOTRE_METHODE

Bon code !

mardi 26 janvier 2010

Gem Prawn 0.7 générer des pdf avec des numéros de page (page_number) pour ror

Pdf prawn rubyonrails

Bon je fais un nouveau billet pour ça parce que j'ai cherché trop longtemps et ça me détend.

Pour afficher les numéros de page dans prawn rien de plus simple (quand on sait ce qu'il faut faire....

pdf.number_pages '<page> sur <total>', [pdf.bounds.bottom_left, 0]

<page> et <total> sont automatiquement remplacés par leur valeur !

Attention mettez cette portion de code à la fin de la vue pdf, et ne mettez pas ça dans un prawn document repeat !

lundi 25 janvier 2010

Prawn 0.7 pdf header et footer deprecated NoMethodError Undefined Method

Pdf prawn rubyonrails

Si vous utilisez le gem prawn pour générer des pdf avec RubyOnRails ATTENTION : Spécifiez la version du gem utilisé dans environment.rb

config.gem 'prawn', :version => '<= 0.6.3'

Les méthodes footer et header ont été supprimées du gem, car elle n'était pas intuitive parait-il, donc si vous utilisez la version 0.7 et les méthodes footer et/ou header une vilaine erreur va s'afficher. (Erreur 500 en prod...)

Pour résoudre le problème euh bien adapter son code ! Il parait qu'il faut utiliser les repeaters de prawn....

http://prawn.majesticseacreature.com/docs/prawn-core/classes/Prawn/Document.html#M000139

Par exemple pour un footer :

Ceci
pdf.footer [pdf.margin_box.left, pdf.margin_box.bottom + 5] do
pdf.text "Super footer"
end

Devient
pdf.repeat :all do
pdf.text "Super footer", :at => pdf.bounds.bottom_left
end

à vos lignes de code....