Question

I have a two dimensional array:

    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

And I load this data into my table with pdf.table line_items ... do ... end

However, the extra spaces in my 2nd column don't show up. How would I escape these spaces so that they aren't stripped?

Était-ce utile?

La solution 3

Your best bet will probably be to use a custom padding for that column. Something like this:

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

Autres conseils

Depending on what you want to do, you can also use the constant Prawn::Text::NBSP. If it is purely blank space, then the column padding is what you want. However, I had a situation where I had to simulate a "checkmark space" such that an X character was underlined. My table looked like:

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

However, this produced a simple X with an underline. I wanted to underlined section to be wider, i.e., space (blank) characters that still received an underline. So I changed the table data to be

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

Then in the PDF, it looked like I wanted: ___X___ (with the X obviously underlined too).

You can do a hack with a character that prawns does not understand

I was able to do it with adding: ⁔ character before the text.

Prawns did not understand it, and ended up giving me a space :)

I don't think it is an escaping problem, maybe you should use a more formal way for spacing, try using the \t character instead of spaces. It is intended for that use.

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
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top