我有一个二维数组:
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
但是,我的第二列中的额外空格不会显示。我如何逃离这些空间,以免它们被剥离?
答案 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)
您可以用大虾不懂的字符进行黑客攻击
我能够在文本之前添加:⁔字符。
虾子听不懂,最后给我一个空格:)