Sep 22 2009
Prawn i prawnto - dlaczego jestem przeciw?
Jednym z elementów programu do faktur, nad którym pracuje jest generowanie wielu rodzajów pdfów, od faktur vat, przez korygujące aż po zestawienia faktur miesięcznie, kwartalne, roczne.Nie ukrywam, że na początku przysparzało to sporo problemów. Głównym z nich były tabelki, które stanowią trzon każdego z powyższych dokumentów. Przy nowej odsłonie pdfów chciałem wykorzystać bibliotekę Prawn wraz z pluginem PrawnTo za namową reklamy na railscasts. W przykładach wszystko wygląda dobrze, pare lini kodu i działa. Jednak problemy zaczynają się przy:
- większej ilości tekstu
- numeracji poszczególnych stron
Autorzy nie przewidzieli dobrej obsługi sytuacji gdy tekst umieszczony w komórce tabeli nie mieści się w jednym wierszu i musi zostać przeniesiony do kolejnych. Pozostawienie automatycznej konfiguracji dawało bardzo kiepskie rezulataty. Oczywiście można też samodzielnie liczyć szerokość każdego z wyrazów i dzielić je w razie potrzeby, gdy nie mieszczą się w jednym wierszu. Jednak obsługa szerokości znaków polskich nie działała poprawnie.Zdedydowanie gorszą sprawą, było numerowanie poszczególnych stron. O ile wersja podstawowa działała bez problemu, bo wystarczało zwiększać licznik wraz z każdą nową stroną to innej wersje są nieosiągalne. Próbowałem najbardziej popularną wersją obecną w dokumentach np: strona 2/7. Jest to konieczne dla wszystkich sprawdzających i czytających aby mieli pewność, że żadana ze stron nie zaginęła. Pytałem o tą sprawę na forum i kanale irc projektu jednak od autora biblioteki otrzymałem odpowiedź: “Nie da się :)”. Podobno mechanizm zamykania stron jest dość dziwny tzn, aby otworzyć nową stronę trzeba zamknąć poprzednią, a raz zamknięta strona nie może być ponownie otworzona. Takie rozwiązanie kompletnie wyklucza moją funkcjonalność. Autor próbował mi pomóc, ale razem doszliśmy do wniosku, że najłatwiejszym i najszybszym (tylko do implementacji) sposobem będzie:
- generowanie dokumentu
- zliczanie jego stron
- generowanie ponownie dokumentu znając już całkowitą liczbę stron z pierwszego punktu
Jednak to rozwiązanie nie bardzo przypadło mi do gustu z uwagi na to, że dokumenty już dość długo się generowały (parę sekund), a w wersji produktcyjnej pewnie zrobi się z tego około 10 z uwagi na dużo większą ilość danych.
Podsumowanie:Prawn polecam do prostych dokumentów takich jak prosta lista czy prawie pusta tabelka. Wtedy używa się tego bardzo przyjemnie. Jednak do bardziej wymagających zadań wciąż niezastąpione jest rfpdf.


November 17th, 2009 at 11:33 am
Próbuję ugryźć rfpdf, ale ta dokumentacja, którą znalazłem jest bardzo enigmatyczna. Czy mógłbym prosić o polecenie czegoś sensownego? Albo jakiś przykład?
November 19th, 2009 at 6:29 am
rfpdf też jest słabe, uzywałem tego tez do generowania faktur
November 21st, 2009 at 12:03 pm
@fidel - napiszę posta z przykładem
@Seban, co innego polecasz z obsługą polskich znaków?