 
Fa temps vaig crear-me un programeta amb Python molt senzill que em lista tots els fitxers d'una determinada ruta i, mitjançant Reportlab, cree un fitxer PDF al vol molt senzillament i ràpida. El fitxer inicial era de moltes fulles perquè el contingut del text ocupaba 1 columna, tot l'ample del document.
Més endavant, en una segona versió del programeta, vaig maquetar el document PDF per a que mostre el llistat de fitxers amb dues columnes, i d'aquesta manera estalvie fulles:
El codi d'aquesta versió amb dues columnes és aquest:
    doc.addPageTemplates(
        [
            PageTemplate(
                frames=[
                    Frame(
                        doc.leftMargin,
                        doc.bottomMargin,
                        doc.width / 2,
                        doc.height,
                        id='left',
                        rightPadding=column_gap / 2,
                        showBoundary=0  # set to 1 for debugging
                    ),
                    Frame(
                        doc.leftMargin + doc.width / 2,
                        doc.bottomMargin,
                        doc.width / 2,
                        doc.height,
                        id='right',
                        leftPadding=column_gap / 2,
                        showBoundary=0
                    ),
Resultat del codi a la terminal de organitzador-2-columnes.py:
I bé, finalment, he fet una altra versió, ara amb 3 columnes, perquè vull estalviar fulls ja que el llistat és molt gran. I he estat configurant els frames a mostrar. El truc està en, per una part, afegir un nou element Frame i anar configurant els valors de:
- doc.width : és l'ample de la columna.
- doc.leftMargin: posició de la part esquerra de la columna.
- leftPadding: espai de dins de les columnes.
Si activem el mode debug de la columna, podrem veure els bordes i anar posicionant-les més fàcilment:
Així queda la configuració de les tres columnes afegint un nou objecte Frame:
Resultat del codi a la terminal de organitzador-3-columnes.py:
El codi de les 3 columnes és:
            PageTemplate(
                frames=[
                    Frame(
                        doc.leftMargin - 60,
                        doc.bottomMargin,
                        doc.width / 3 + 40,
                        doc.height,
                        id='ThreeCol',
                        rightPadding=column_gap / 8,
                        showBoundary=1  # set to 1 for debugging
                    ),
                    Frame(
                        doc.leftMargin + doc.width / 3 - 20,
                        doc.bottomMargin,
                        doc.width / 3 + 40,
                        doc.height,
                        id='ThreeCol',
                        leftPadding=column_gap / 8,
                        showBoundary=1
                    ),
                    Frame(
                        doc.leftMargin + doc.width / 3 + 171,
                        doc.bottomMargin,
                        doc.width / 3 + 40,
                        doc.height,
                        id='ThreeCol',
                        leftPadding=column_gap / 8,
                        showBoundary=1
                    ),
Aquest programa està publicat al meu repositori de Github, el pots descarregar des de https://github.com/joancatala/pelis








