微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

试图在 ruby​​/rails 中使用 Prawn PDF 创建一个两列无序的项目符号列表?

如何解决试图在 ruby​​/rails 中使用 Prawn PDF 创建一个两列无序的项目符号列表?

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

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

*姓名 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]}})

这显然使项目符号列表直接向下,但这似乎是一个不错的开始,但是我是否需要拆分列表,将列表与前半部分一起向下创建,将 PDF 返回一些量,向右移动,并重复这个过程?

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

任何提示将不胜感激!

解决方法

好吧,所以我最终使用了 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] } })

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。