尝试在 ruby/rails 中使用 Prawn PDF 制作两列无序的项目符号列表?

Trying to make a two column unordered, bulleted list with Prawn PDF in ruby/rails?

我在使用 prawn PDF 和 prawn/table 创建两列项目符号列表时遇到了问题。我想知道是否有一种方法可以解决 custom/uses 现有的 类 来处理溢出到新页面等问题,这样我就不会错过任何东西或重新发明轮子。

我希望列表看起来像这样:

*名字 1 * 名字 3

*姓名 2 * 姓名 4

... ...

目前我拥有的是:

bullet_list = [
[ '*' , 'Name 1' ],
[ '*' , 'Name 2' ],
[ '*' , 'Name 3' ],
[ '*' , 'Name 4' ]
]

pdf.table(bullet_list, {:cell_style => { :borders => [], :align => :justify, :padding => [0,10,0,0]}})

这显然使项目符号列表直接向下,但这似乎是一个不错的开始,但我是否需要拆分列表,用前半部分创建列表,备份 PDF 一些,继续对,然后重复这个过程?

我正在考虑的另一件事是使用内联 HTML 样式,如下所示 https://prawnpdf.org/manual.pdf(第 53 页)但我认为它只接受非常基本的样式,例如 bold/italics。

如有任何提示,我们将不胜感激!

好吧,所以我最终使用了 table 方法,我不确定为什么我没有早点想到这一点,但我们可以将名称列表分成两半并将它们附加到这样的将名称的后半部分附加到与名称的前半部分相同的行的方式。这基本上是我所做的:

require 'active_support/core_ext/array/grouping'
require 'prawn'
require 'prawn/table'

names = ['John', 'Jim', 'Joe', 'James']
pdf = Prawn::Document.new

split_names = names.in_groups(2, false)

split_names.first.each do |name|
  bullet_list << ["\u2022", name]
end

split_names.second.each_with_index do |name, index|
  bullet_list[index].push("\u2022", name)
end

pdf.table(bullet_list, { cell_style: { borders: [], align: :justify, padding: [0, 10, 0, 0] } })

这是一个有效的解决方案,但如果您有任何提示或应该进行的更改,请告诉我。