Dodatkowe Flowables w ReportLab.

Flowables – i ogólnie cały tryb platypus – w ReportLab [pythonowej maszynce do robienia PDFów] są bardzo wygodną rzeczą, znacznie upraszczając proces ich tworzenia; tabelki, formatowany tekst, pliki graficzne [z zastrzeżeniem poniżej] i inne składowe docelowego PDF deklarujemy jako obiekty klas pochodnych od Flowables, a następnie po prostu dodajemy do listy, stanowiącej podstawę dla pliku docelowego. I już. Do niewymagających edytorsko moich potrzeb – w zupełności wystarczy [reszcie pozostaje niskopoziomowy, ale i dający większe możliwości mechanizm „canvas”]… a raczej wystarczałby, gdyby nie OOTB brak możliwości definiowania jako Flowables zakładek [aka „outline tree”], wykresów z matplotliba oraz linków dokumentu w tabelkach. Bardziej jako note to self, choć… może komuś się przydadzą i oszczędzą paru godzin zastawiania się.

Zakładki:
class Bookmark(Flowable):
""" Utility class to display PDF bookmark. """

def __init__(self, title, key):
self.title = title
self.key = key
Flowable.__init__(self)

def wrap(self, availWidth, availHeight):
""" Doesn't take up any space. """
return (0, 0)

def draw(self):
# set the bookmark outline to show when the file's opened
self.canv.showOutline()
# step 1: put a bookmark on the
self.canv.bookmarkPage(self.key)
# step 2: put an entry in the bookmark outline
self.canv.addOutlineEntry(self.title,self.key, 0, 0)
link

Wykresy z matplotlib jako obiekty Flowable; matplotlib umie oczywiście generować wykresy do pliku, ale u mnie z przyczyn, których nie umiem dojść, pliki te, poosadzane w PDF, wyglądają dramatycznie, niezależnie od ustawień dpi i rozmiarów, a dodatkowo OOTB u mnie możliwe było tylko generowanie postscriptu i SVG: link rozwiązuje to wszystko lekko, łatwo i przyjemnie.

Linki zewnętrzne i wewnętrzne w tabelkach: tutaj sprawa jest relatywnie prosta, wystarczy wartości w komórkach tabeli nie deklarować czystym tekstem, ale jako instancje klasy reportlab.platypus.Paragraph. Dla mnie wystarcza, choć znalazłem również obejścia niedotyczących mnie problemów… ale skoro już robię składowisko, niech i to tutaj zostanie.

EDIT: a na deser: How To Create Custom Flowables.

EDIT#2: Własne fonty w ReportLab.

Skomentuj

Wprowadź swoje dane lub kliknij jedną z tych ikon, aby się zalogować:

Logo WordPress.com

Komentujesz korzystając z konta WordPress.com. Wyloguj / Zmień )

Zdjęcie z Twittera

Komentujesz korzystając z konta Twitter. Wyloguj / Zmień )

Zdjęcie na Facebooku

Komentujesz korzystając z konta Facebook. Wyloguj / Zmień )

Zdjęcie na Google+

Komentujesz korzystając z konta Google+. Wyloguj / Zmień )

Connecting to %s