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 ?
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ć
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
@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
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 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