2

Prawnを使用して、多数の画像を含むディレクトリからPDFを生成しようとしています。私がこれまでに持っているコードは完璧に機能しますが、小さな問題が1つだけあり、PDFの先頭に空白のページが挿入されます。

画像のサイズが必ずしもわからないため(ほぼ同じである場合を除き、どちらのサイズでも+/- 50ピクセル)、RMagickを使用してディレクトリ内の画像の最大サイズを取得し、中央に配置できるようにします。各ページに少し余裕を持って配置します。

動作を再現するために必要な手順だけに簡略化されたコードは次のとおりです。

require 'rmagick'
require 'prawn'

# Page files always have a name in the form of 'page_#.jpg'
pages = Dir.glob('*.jpg').sort_by { |file| file.split('_')[1].to_i }

# There's probably a better way to do this part, but the naive way works just fine, so whatever...
widths = Array.new

heights = Array.new

pages.each do |page|
  image = Magick::Image::read(page).first

  widths << image.columns

  heights << image.rows
end

Prawn::Document.generate('test.pdf', :page_size => [widths.max + 36, heights.max + 36]) do |pdf|
  pages.each do |page|
    pdf.image page, :position => :center, :vposition => :center
  end
end

私がPrawnで実際に何かをしたのはこれが初めてなので、おそらく私が見逃している単純な何かがあります。

それが重要な場合; Ruby1.9.3-p327とPrawn0.12.0を使用しています。

4

1 に答える 1