Ruby 当从图像生成PDF时,Prawn生成空白页

Ruby 当从图像生成PDF时,Prawn生成空白页,ruby,pdf,pdf-generation,prawn,Ruby,Pdf,Pdf Generation,Prawn,我正在尝试使用Prawn从一个目录生成一个PDF,其中包含一堆图像。到目前为止,我的代码工作得非常完美,只有一个小问题,它在PDF的开头插入了一个空白页 由于我不一定知道图像的大小(除了它们大致相同,+/-50像素,任意一个维度),所以我使用RMagick获得目录中图像的最大维度,这样我就可以在每一页的中间留一点空白 下面是代码,只包含重现行为的必要步骤: require 'rmagick' require 'prawn' # Page files always have a name in

我正在尝试使用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
需要“rmagick”
需要“虾”
#页面文件的名称始终采用“Page_35;.jpg”的形式
pages=Dir.glob('*.jpg')。按{文件{文件.split(''u')[1]排序。}
#也许有更好的方法来完成这一部分,但天真的方法很好,所以不管怎样。。。
宽度=Array.new
高度=Array.new
页数。每个do |页数|
image=Magick::image::read(第页)。首先
宽度:中心,:v位置=>:中心
结束
结束
这是我第一次真正用虾做任何事情,所以我可能遗漏了一些简单的东西


如果重要的话;我使用的是Ruby 1.9.3-p327和Prawn 0.12.0。

似乎导致此问题的原因已得到修复。在Prawn 1.1.0中使用与上述相同的代码不会在其他页面之前生成空白页面