2011-02-08 9 views
7

Generuję plik PDF za pomocą wtyczki Prawn i Prawnto w aplikacji mojej szyny.Jak mogę utworzyć formatowanie śródliniowe (pogrubienie i podkreślenie) dla plików PDF generowanych przez Prawnto w Railsach?

Tworzę standardowy formularz ze standardowym tekstem i przesyłam go jako treść pliku PDF.

Jednak muszę być w stanie sformatować słowa i zdania z:

  • pogrubioną
  • podkreślenia
  • może inny typ rozmiary

Chcę być w stanie to zrobić z wewnątrz pola tekstowego textarea. Teraz, ponieważ używam prawnto, generuję generalnie widok, który wyprowadza to, co jest w textarea.

Ale jeśli wstawię, powiedzmy, pogrubiony w polu tekstowym, to nie formatuje, tylko renderuje.

Jak to zrobić?

Odpowiedz

6

możemy mieć podobne aplikacje ...

Prawn można zrobić podstawowe formatowanie inline oparte na HTML (prosty) - spojrzeć na przykładzie text/inline_format.rb na github. W rzeczywistości spójrz na cały Prawn Example Gallery, jeśli nie - to jeden z najlepszych, jakie widziałem.

Aby uzyskać potrzebny kod HTML, możesz wpisać kod HTML bezpośrednio w obszarze tekstowym (nieco brzydko - może nie być dobrym pomysłem, jeśli ktoś oprócz Ciebie będzie wprowadzał tekst) lub użyć czegoś podobnego do Markdown, aby zinterpretować bardziej przyjazne dla użytkownika "kody stylu", takie jak StackOverflow. Myślę, że BlueCloth jest najbardziej znaną implementacją ruby, ale nigdy jej nie użyłem.

Pogrubienie i podkreślenie? Nie ma problemu. Rozmiar czcionki może być trudniejsze - Wyobrażam sobie, że byłoby trudne do dostać BlueCloth emitować coś jak (przestarzałe) < font> oni wykorzystać w przykładzie Prawn ...

Nadzieja to pomaga - na zdrowie!

+2

więc jeśli po prostu dodaję inline_format => true, zajmie to HTML w polu tekstowym? – Angela

+0

Używam plugin prawnto, zapomniałem, a więc nie uzyskując dostępu bezpośrednio do pliku PDF, tylko przekazując widok z renderowaniem pdf i prawnik opiekuje się nim ... jak mogę tak sformatować? – Angela

+0

@Angela Nie słyszałem o krewetce. Właśnie to sprawdziłem i wygląda obiecująco. Wygląda na to, że nadal używa oryginalnych metod Prawn, tylko w widoku, więc powinieneś wywoływać 'pdf.text @ textarea_text' gdzieś w widoku. Dodanie opcji ': inline_format => true', tak jak powiedziałeś, powinno być wszystkim, czego potrzeba. Ale żadnych obietnic - nie testowałem tego! –

1

W odpowiedzi na pogrubioną czcionką ...

W sterowniku:

respond_to zrobić | Format | format.pdf {render: layout => false} prawnto: filename => @current_project + ". Pdf",: prawn => {: font => 'Times-Roman'},: inline => false
koniec

Następnie w pliku pdf.prawn można użyć:

w polu tekstowym:

pdf.text_box "Wersje dokumentu",: size => 16: style =>: pogrubienie,: at = > [0.mm, 10.mm],: width => 100.mm,: height => 15.mm;

lub samodzielnie wiersz:

pdf.tekst "Zawartość dokumentu",: size => 16,: style =>: bold;

Jak rozumiem - ale nie próbował go - podkreślić trzeba zrobić:

: style => [: pogrubienie: podkreślenie];

refence this link for more

To nie jest cechą wersji 0.8.4, ale w wersji 0.10.2 - nie wiem, jak byś zrobił podkreślają w 0.8.4. Obecnie nie używam wersji 0.10.2, więc nie mogę potwierdzić, że to działa.

podstawie tego, co pan powiedział mi, że to, co chcesz za śmiały:

pdf.text_box "#{@yourtext.text}": size => 16: style =>: bold ,: at => [0.mm, 10.mm],: width => 100.mm,: height => 15.mm;

+0

jak to zrobić w trybie inline? Więc mogę go przekazać. textarea .. – Angela

+0

: styles => [: bold,: podkreślenie]; nie działa w prwan 0.8.4, ale jest w najnowszej wersji na github. więc nie wiesz, której wersji używasz. Używam 0.8.4 i while: style =>: pogrubienie działa, inni nie. Zmieniono odpowiedź na to i następne pytanie. – user596916