Ruby + Prawn PDF:如何在表格的字符串中添加空格前缀?

时间:2014-04-24 20:53:08

标签: ruby prawn

我有一个二维数组:

    line_items = []
    line_item.product.book_versions.each do |book_version|
        data = []
        data << ""
        data << "     #{book_version.book.title} - #{book_version.isbn}" #<-- notice the extra spaces in the beginning of the string
        data << "#{line_item.quantity}"
        line_items << data
    end

然后我使用pdf.table line_items ... do ... end

将这些数据加载到我的表格中

但是,我的第二列中的额外空格不会显示。我如何逃离这些空间,以免它们被剥离?

4 个答案:

答案 0 :(得分:1)

根据您的目的,您还可以使用常量Prawn::Text::NBSP。如果它是纯空格,那么列填充就是你想要的。但是,我有一种情况,我不得不模拟一个“复选标记空间”,以便X字符加下划线。我的表看起来像:

table([["<u>X</u>", "Do you agree to these terms and conditions?"]]) do
  columns(0).style(:inline_format => true)
end

然而,这产生了一个带下划线的简单X。我想强调部分更宽,即仍然收到下划线的空格(空白)字符。所以我将表数据更改为

table([["<u>#{Prawn::Text::NBSP*3} X #{Prawn::Text::NBSP*3}</u>", ...]]) do

然后在PDF中,它看起来像我想要的那样:___X___X显然也有下划线。)

答案 1 :(得分:0)

我不认为这是一个逃避问题,也许您应该使用更正式的间距方式,尝试使用\t字符而不是空格。它适用于该用途。

line_items = []
line_item.product.book_versions.each do |book_version|
  data = []
  data << ""
  data << "\t\t#{book_version.book.title} - #{book_version.isbn}"
  data << "#{line_item.quantity}"
  line_items << data
end

答案 2 :(得分:0)

您最好的选择可能是为该列使用自定义填充。像这样:

pdf.table line_items do
  column(1).padding = [5, 5, 5, 30] # Default padding is 5; just increase the left padding
  ...
end

答案 3 :(得分:0)

您可以用大虾不懂的字符进行黑客攻击

我能够在文本之前添加:⁔字符。

虾子听不懂,最后给我一个空格:)