Bienvenue sur IndexError.

Ici vous pouvez poser des questions sur Python et le Framework Django.

Mais aussi sur les technos front comme React, Angular, Typescript et Javascript en général.

Consultez la FAQ pour améliorer vos chances d'avoir des réponses à vos questions.

Paragraphes continus de page en page avec bordures

+1 vote

J'aimerais pouvoir avoir des paragraphes continus de page en page dans un document pdf, c'est à dire sans espaces en haut et bas des pages, tout en conservant les bordures des paragraphes dans le flux.

Le problème est que je n'arrive pas à trouver comment régler les options pour avoir l'effet désiré.
Si un paragraphe est situé sur plusieurs pages, les bordures sont "refermées".

Alors que je voudrais que si par exemple un paragraphe est à cheval sur 2 pages, que sur la première, les bordures du haut soit affichées, et que sur la seconde les bordures bas soient affichées.

Pour l'instant, j'obtiens ceci :
http://www.cjoint.com/data/FEun3kbNVmW_vue-1.png

Comme vous pouvez le voir, les bordures du bas du paragraphe sont affichées sur la 1ère page, alors qu'il continue sur la seconde.

Sur cet autre exemple, c'est encore pire puisque les bordures hautes ne sont pas affichées.
http://www.cjoint.com/data/FEun5AONQfW_vue-2.png

Le code basique minimal.

#!/usr/bin/python3
# -*-coding: utf-8 -*

import random
from reportlab.platypus import SimpleDocTemplate, Paragraph, Spacer
from reportlab.lib.styles import ParagraphStyle
from reportlab.lib import colors
from reportlab.lib.pagesizes import A4
from reportlab.lib.enums import TA_LEFT
from reportlab.lib.units import cm as CM

f = open('/usr/share/dict/words')
lignes = f.readlines()
indexMax = len(lignes) - 1

style = ParagraphStyle('Conteneur',
                       fontName='Courier',
                       fontSize=10,
                       leading=10,
                       leftIndent=0,
                       rightIndent=0,
                       firstLineIndent=10,
                       alignment=TA_LEFT,
                       spaceBefore=2,
                       spaceAfter=2,
                       bulletFontName='Courier',
                       bulletFontSize=16,
                       bulletIndent=0,
                       textColor= colors.darkgreen,
                       backColor=colors.lightgreen,
                       wordWrap=None,
                       borderWidth= 1,
                       borderPadding= 10,
                       borderColor= colors.darkgreen,
                       borderRadius= 5,
                       allowWidows= 1,
                       allowOrphans= 0,
                       textTransform=None,
                       endDots=None,         
                       splitLongWords=1)

paragraphes = []
paragraphes.append(Spacer(0, 2.5 * CM))
for n in range(30) :
    nbMots = random.randint(20, 200)
    i = 0
    mots = ''
    while i < nbMots :
        mots += lignes[random.randint(0, indexMax)].strip() + ' '      
        i += 1
    paragraphes.append(Paragraph(mots.rstrip(), style))
    paragraphes.append(Spacer(0, 2.5 * CM))

pdf = SimpleDocTemplate('test.pdf', pagesize=A4, leftMargin=1.5 * CM, rightMargin=1.5 * CM, topMargin=0,
                        bottomMargin=0, title='Test mise en forme paragraphes', author='Bibi', allowSplitting=1)
pdf.build(paragraphes)
demandé 21-Mai-2016 par Roubignole

Votre réponse

Preview

Votre nom à afficher ( en option ):
Vie privée: . Votre adresse de messagerie ne sera utilisée que pour l'envoi de ces notifications .
Vérification anti -spam:
Pour éviter cette vérification à l'avenir, Connectez vous ou inscrivez vous.
...