2

我正在尝试使用 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。

4

1 回答 1

0

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

于 2014-07-24T05:22:34.123 回答