Prawn i znaczniki html

Witam, używam edytora tekstu tiny_mce i chciałbym mieć możliwość generowania pól tekstowych do pdf’u. Niestety pola te zapisują się wraz ze znacznikami html które uzyłem do formatowania tekstu w tym polu. Czy muszę stworzyć dodatkowe zwykłe pole tekstowe do którego będe musiał wklepywać ten sam tekst i zapisze mi się on w bazie danych bez znaczników czy jest jakiś sposób na pozbycie się tych znaczników - choć może to być karkołomne :slight_smile: ?

Użyj jakiegoś parsera HTML-a - HPricot albo HTML::Document z braćmi na przykład. Z niego możesz odzyskać tekstową postać HTML-a. Ale PDFa to z tego jeszcze nie zrobisz. Możesz zainteresować się parą narzędzi ApacheFOP i css2xslfo.

A co to jest “prawn”?

Biblioteka do generowania pdf’ów w Rubym

Jeżli chcesz sam tekst to możesz coś takiego zrobić

def strip_tags(text)                                                                                                         
  text.gsub(/<\/?[^>]*>/, "")                                                                        
end

z tym, że cała semantyka zostanie zlikwidowana …
no i oczywiście nie jest to najlepszy regexp świata, ale do podstawowego wywalenia tagów powinno wystarczyć :wink:

Zastanawiam się czy nie lepiej byłoby przetrzymywać taki tekst w bazie osobno tzn bez tych znaczników lae to znaczyłoby podwójną pracę przy tworzeniu artykułu. Wydaje mi się że byłoby to najbezpieczniejsze ale napewno nie wydajne.

Chłopak chce generować pdfy, więc pewnie najłatwiej będzie po prostu trzymać je na dysku :wink:

@wlodi - albo masz podwójną pracę przy tworzeniu artykułu, albo przy czytaniu. Sam musisz zdecydować co robisz częściej.

aha - jeśli regexpem usuniesz znaczniki, to masz tekst pisany jednym cięgiem. Nie da się tego czytać. Użyj parsera i zwróć uwagę na elementy blokowe i inne, po których będziesz chciał w tekst wsadzić znaki końca linii.

… albo użyć railsowego strip_tags, zdecydowanie bardziej polecany :wink:

Wywalenie markupu ma tę wadę, że zamieniasz tekst w “blachę” (znikają złamania linii i akapity). Musiałbyś znaleźć sposób na konwersję br do \n oraz pary

na \n\n

A z konwersji HTML do tekstu z zachowaniem pewnego formatowania to już całe aplikacyjki można robić: http://www.nirsoft.net/utils/htmlastext.html

a nie łatwiej wykorzystać PDFKit?

http://railscasts.com/episodes/220-pdfkit

A potrafi on polskie znaki do PDFa włączyć? Większość narzędzi, za jakimi rozglądałem się kilka lat temu tego nie potrafiła. Anglicy używają tylko swoich podstawowych znaczków, my mamy pewien problem.

Własnie sprawdzam PdfKit i pojawił mi się problem przy momencie generowania dokumentu:

The switch --disable-smart-shrinking, is not support using unpatched qt, and will be ignored.

– aplikacja się zwiesza i nic się nie dzieje. Używam ubuntu 10.04
zainstalowałem pdfkita poleceniem: gem install pdfkit a nastepnie wkhtmltopdf za pomocą centrum oprogramowania ubuntu. W katalogu config/initializers swtorzyłem plik pdfkit.rb i w nim wpisałem ścieżkę dostepu do wkhtmltopdf:

PDFKit.configure do |config| config.wkhtmltopdf = '/usr/bin/wkhtmltopdf' end