Configurant columnes a documents PDF generats al vol amb Python i Reportlab

Configurant columnes a documents PDF generats al vol amb Python i Reportlab

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

Doncs bé això és tot, espere que trobes útil aquest article i que et motive a compartir els teus trucs, els teus coneixements i els teus experiments amb el Programari Lliure. Pensa-ho, va, que la Comunitat del Programari Lliure va creixent gràcies a la documentació, el disseny, la formació o la programació, sigues part de la Comunitat :-)

La cultura i la lliure circulació de les idees és l'arma més efectiva contra les dictadures del pensament i contra la ignorància.

Utilitats

NAVEGACIÓ SENSE RATOLÍ

- Tab següent enllaç.
- Shift+Tab anterior enllaç.
- Enter activa l'enllaç.
- Alt+esquerra anar arrere.

CONTRAST DE COLORS

Accessibilitat - Color Negre
Accessibilitat - Color Groc
Accessibilitat - Color Verd

Accessibilitat - Color Blau
Accessibilitat - Color Crema
Accessibilitat - Color Blanc

 

PORTADES ALTERNATIVES