2012-04-11 12 views
7

Chciałbym stworzyć tabelę krewetek, w której tekst komórki jest zawijany przez słowa, a nie litery. Używam już shrink_to_fit, ale wygląda na to, że krewetki są pakowane na podstawie liter. Idealnie chciałbym, żeby był zawijany na samych słowach (single_line nie jest opcją, ponieważ może być 2-3 słów na komórkę).Jak zawijać słowami w krewetce Tabela

Ktoś wie, jak to zrobić?

Odpowiedz

3

Może Twoja tabela zawiera słowa, które są zbyt długie dla pojedynczej komórki tabeli? O ile mi wiadomo, komórki tabeli w tabelach Prawn używają obwiedni, które powinny automatycznie zawijać tekst. Poniższy przykład działa dobrze dla mnie:

Prawn::Document.generate 'example.pdf' do 
    data = [['Pig','Oink '*10], 
      ['Cow','Moo '*10], 
      ['Duck','Quack '*10]] 
    table data do |table| 
    table.column_widths = [50,150] 
    end 
end 

Jeśli nic nie działa, można próbować budować własną tabelę z wielu text_box połączenia zamiast korzystać z wbudowanego Prawn table method, to jest oczywiście nieco kłopotliwe. text_box rysuje żądany tekst w polu. Parametr :overflow kontroluje zachowanie, gdy ilość tekstu przekracza dostępną przestrzeń, dostępne są opcje: :truncate, :shrink_to_fit lub :expand.

text_box(txt, :at => [x,y], :width => width, :height => height, :size => size, 
       :overflow => :shrink_to_fit,..) 
+0

Witam, dziękuję za odpowiedź :) Jeśli zmienisz na "data = [[" Pig "," Hello There "* 10]," w pierwszym wierszu twoich danych zobaczysz, że dostanę ten sam problem, który dostaję. Słowo "tam" jest niepoprawnie zapakowane. Przyjrzę się teraz dokładniej text_box, dziękuję za odpowiedź, +1. – Spyros

+1

Jak również stwierdzam w pytaniu, już używam shrink_to_fit, ale ten robi na znak, a nie na zawijanie słów, co jest właściwie tym, o co chodzi. – Spyros