Je tente de générer un PDF à partir d'un répertoire contenant une multitude d'images en utilisant Prawn. Le code que j'ai jusqu'à présent fonctionne parfaitement, avec seulement un petit problème, il insère une page vierge au début du PDF.
Puisque je ne connais pas nécessairement les tailles des images (autres que d'être à peu près les mêmes, +/- 50 pixels dans chaque dimension), j'utilise RMagick pour obtenir les dimensions maximales des images dans le répertoire afin de les centrer sur chaque page avec un peu de marge.
Voici le code réduit aux étapes nécessaires pour reproduire ce comportement :
require 'rmagick'
require 'prawn'
# Les fichiers de page ont toujours un nom sous la forme 'page_#.jpg'
pages = Dir.glob('*.jpg').sort_by { |file| file.split('_')[1].to_i }
# Il y a probablement une meilleure façon de faire cette partie, mais la façon naïve fonctionne très bien, peu importe...
largeurs = Array.new
hauteurs = Array.new
pages.each do |page|
image = Magick::Image::read(page).first
largeurs << image.columns
hauteurs << image.rows
end
Prawn::Document.generate('test.pdf', :page_size => [largeurs.max + 36, hauteurs.max + 36]) do |pdf|
pages.each do |page|
pdf.image page, :position => :center, :vposition => :center
end
end
C'est la première fois que je fais vraiment quelque chose avec Prawn, donc il y a probablement quelque chose de simple que je suis en train de manquer.
Si cela compte; j'utilise Ruby 1.9.3-p327 et Prawn 0.12.0.