我正在尝试使用 Prawn 从包含一堆图像的目录生成 PDF。到目前为止,我的代码运行良好,只有一个小问题,它在 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 做过任何事情,所以我可能缺少一些简单的东西。
如果重要的话;我正在使用 Ruby 1.9.3-p327 和 Prawn 0.12.0。