IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Python Discussion :

Pdf python erreur


Sujet :

Python

  1. #1
    Futur Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Décembre 2017
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2017
    Messages : 18
    Points : 9
    Points
    9
    Par défaut Pdf python erreur
    Bonjour à tous,

    J'essaye de générer des fichiers pdf sur la version 2.7 de python. Pour l'instant, je n'ai pas le choix je ne peux utiliser que cette version.
    Et j'essaye d'introduire une image dans mon fichier pdf mais mais malgré tous les essais, j'ai cette erreur qui revient souvent :
    image.drawOn(doc, doc.leftMargin, doc.height - image.drawHeight - doc.topMargin)
    File "C:\Python27\lib\site-packages\reportlab\platypus\flowables.py", line 112, in drawOn
    canvas.saveState()
    AttributeError: SimpleDocTemplate instance has no attribute 'saveState'
    Ou sinon :

    AttributeError: SimpleDocTemplate instance has no attribute 'canvas'

    Pourriez-vous m'aider ?

  2. #2
    Expert éminent
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    3 824
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Lead Dev Python
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 824
    Points : 7 120
    Points
    7 120
    Par défaut
    Citation Envoyé par débutant09
    Pour l'instant, je n'ai pas le choix je ne peux utiliser que cette version.
    Un enseignant récalcitrant ?

    Citation Envoyé par débutant09
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    AttributeError: SimpleDocTemplate instance has no attribute 'saveState'
    Regarder la documentation sur l'objet SimpleDocTemplate, et chercher à savoir s'il existe une méthode saveState.
    Celui qui trouve sans chercher est celui qui a longtemps cherché sans trouver.(Bachelard)
    La connaissance s'acquiert par l'expérience, tout le reste n'est que de l'information.(Einstein)

  3. #3
    Futur Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Décembre 2017
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2017
    Messages : 18
    Points : 9
    Points
    9
    Par défaut
    Je suis stagiaire dans une entreprise
    Ça ne vient pas d'un enseignant
    Oui la méthode y est sur la documentation

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    if __name__ == '__main__':
        from reportlab.lib.styles import _baseFontName, _baseFontNameB
        def myFirstPage(canvas, doc):
            from reportlab.lib.colors import red
            PAGE_HEIGHT = canvas._pagesize[1]
            canvas.saveState()
            canvas.setStrokeColor(red)
            canvas.setLineWidth(5)
            canvas.line(66,72,66,PAGE_HEIGHT-72)
            canvas.setFont(_baseFontNameB,24)
            canvas.drawString(108, PAGE_HEIGHT-108, "TABLE OF CONTENTS DEMO")
            canvas.setFont(_baseFontName,12)
            canvas.drawString(4 * inch, 0.75 * inch, "First Page")
            canvas.restoreState()
     
        def myLaterPages(canvas, doc):
            from reportlab.lib.colors import red
            PAGE_HEIGHT = canvas._pagesize[1]
            canvas.saveState()
            canvas.setStrokeColor(red)
            canvas.setLineWidth(5)
            canvas.line(66,72,66,PAGE_HEIGHT-72)
            canvas.setFont(_baseFontName,12)
            canvas.drawString(4 * inch, 0.75 * inch, "Page %d" % doc.page)
            canvas.restoreState()

  4. #4
    Expert éminent
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    3 824
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Lead Dev Python
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 824
    Points : 7 120
    Points
    7 120
    Par défaut
    Attention un Canvas n'est pas un SimpleDocTemplate.

    Là à l'occurrence, python vous dit que votre objet canvas n'est pas un Canvas (qui a effectivement cette méthode saveState) mais un objet SimpleDocTemplate.
    Celui qui trouve sans chercher est celui qui a longtemps cherché sans trouver.(Bachelard)
    La connaissance s'acquiert par l'expérience, tout le reste n'est que de l'information.(Einstein)

  5. #5
    Expert éminent
    Avatar de jurassic pork
    Homme Profil pro
    Bidouilleur
    Inscrit en
    Décembre 2008
    Messages
    3 954
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 3 954
    Points : 9 284
    Points
    9 284
    Par défaut
    Hello,
    il faudrait que tu nous montres comment sont appelées tes fonctions et surtout comment est défini le paramètre canvas que tu passes.
    Ami calmant, J.P
    Jurassic computer : Sinclair ZX81 - Zilog Z80A à 3,25 MHz - RAM 1 Ko - ROM 8 Ko

  6. #6
    Futur Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Décembre 2017
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2017
    Messages : 18
    Points : 9
    Points
    9
    Par défaut
    Voici mon code, ça va peut être vous aider à comprendre mon erreur :

    Code python : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    from reportlab.lib.pagesizes import landscape, A3
    from reportlab.platypus import SimpleDocTemplate, Table, TableStyle, Paragraph, Image
    from reportlab.lib.styles import getSampleStyleSheet
    import pandas as pd
     
     
    def create_pdf_with_dataframe(file_path, dataframe, image_path):
        # Spécifier la taille de la page en mode paysage et A3 (plus grande)
        doc = SimpleDocTemplate(file_path, pagesize=landscape(A3), topMargin=30)
     
        styles = getSampleStyleSheet()
        style_heading = styles["Heading1"]
     
        # Créer un tableau pour le DataFrame
        table_data = [dataframe.columns.values.tolist()] + dataframe.values.tolist()
        table = Table(table_data)
     
        # Appliquer des styles au tableau
        table.setStyle(TableStyle([('ALIGN', (0, 0), (-1, -1), 'CENTER'),
                                   ('FONT', (0, 0), (-1, 0), 'Helvetica-Bold'),
                                   ('BACKGROUND', (0, 0), (-1, 0), 'grey'),
                                   ('TEXTCOLOR', (0, 0), (-1, 0), 'white'),
                                   ('GRID', (0, 0), (-1, -1), 1, 'black')]))
     
        # Ajouter le titre
        title = Paragraph("ROP", style_heading)
     
        # Construction des éléments
        elements = []
     
        # Ajouter l'image en haut à gauche
        image = Image(image_path, width=120, height=85)
        image.wrapOn(doc, doc.width, doc.topMargin)  # Pour ajuster la taille de l'image selon la marge supérieure
        image.drawOn(doc, 30, doc.height - 120)  # Positionner l'image aux coordonnées (30, hauteur du document - 120)
     
        # Ajouter le titre
        elements.append(title)
     
        # Ajouter le tableau
        elements.append(table)
     
        # Générer le PDF
        doc.build(elements)
     
    # Exemple d'utilisation :
    site_id = "XXXX"
    account_code = "XXXX"
    df = data(site_id, account_code)  # Assurez-vous que cette fonction retourne un DataFrame
    image_path = "c:\\Users\\xxxx\\Desktop\\Factures detail\\img\\xxx.png"  # Remplacez par le chemin de votre image
    create_pdf_with_dataframe("c:\\Users\\xxx\\Desktop\\Factures detail\\example.pdf", df, image_path)

  7. #7
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 287
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 287
    Points : 36 776
    Points
    36 776
    Par défaut
    Citation Envoyé par débutant09 Voir le message
    Voici mon code, ça va peut être vous aider à comprendre mon erreur
    Comme vous n'avez viré la fonction du début, il n'y a plus d'erreur à chercher.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  8. #8
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 690
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 690
    Points : 30 986
    Points
    30 986
    Billets dans le blog
    1
    Par défaut
    Bonjour
    Le second code ne sert à rien car il ne montre pas l'instruction canvas.saveState(), source originelle de l'erreur. Il faut montrer comment est construit "canvas".

    Et on poste ses codes entre balises, cf les règles. Ce n'est même pas une question de règle mais juste de "bon-sens". Tu sais parfaitement que Python utilise les tabulations pour se repérer. Comment veux-tu alors qu'on puisse lire un code dans lequel il n'y a aucune tabulation ???
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  9. #9
    Futur Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Décembre 2017
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2017
    Messages : 18
    Points : 9
    Points
    9
    Par défaut
    Bonjour Sve@r,

    Je ne savais pas comment mettre mon code sous format python sur ce forum, donc tu m'excuseras de ne pas l'avoir mis c'était pas une mauvaise volonté de ma part. J'ai modifié mon message.
    Par contre, si tu veux aider quelqu'un dans ce forum la prochaine fois conseille le plus gentiment.

  10. #10
    Futur Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Décembre 2017
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2017
    Messages : 18
    Points : 9
    Points
    9
    Par défaut
    Citation Envoyé par wiztricks Voir le message
    Comme vous n'avez viré la fonction du début, il n'y a plus d'erreur à chercher.

    - W
    Oui parce que ma fonction de début n'est rien d'autre qu'une fonction qui récupère mon data frame python afin que je la mette dans mon pdf que je veux générer grâce à ma fonction def create_pdf_with_dataframe(file_path, dataframe, image_path).
    C'est cette fonction qui me provoque l'erreur, je pense avoir mal compris l'utilisation de canvas.

  11. #11
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 287
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 287
    Points : 36 776
    Points
    36 776
    Par défaut
    Citation Envoyé par débutant09 Voir le message
    C'est cette fonction qui me provoque l'erreur, je pense avoir mal compris l'utilisation de canvas.
    Hmmm votre soucis est dans la récupération du canvas qui en fait se crée pour y insérer l'image comme le montre cet exemple.
    Et... bien décrire un problème même si ce n'est pas pour demander de l'aide dans un forum est la première étape (la plus importante) de sa résolution.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  12. #12
    Futur Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Décembre 2017
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2017
    Messages : 18
    Points : 9
    Points
    9
    Par défaut
    Ce code fonctionne, j'ai enlevé le image.drawOn et image.wrapOn, auriez-vous une idée comment déplacer mon image en haut à gauche dans mon pdf s'il vous plaît ?
    Car avec drawOn je n'y arrive pas, c'est pour ça que je l'ai enlevé mais le problème est que mon image se place en haut au centre par défaut, alors que je la voudrais à gauche en haut comme une entête.

    Merci d'avance pour votre aide !

    Code python : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    from reportlab.lib.pagesizes import landscape, A3
    from reportlab.platypus import SimpleDocTemplate, Table, TableStyle, Paragraph, Image
    from reportlab.lib.styles import getSampleStyleSheet
    from reportlab.pdfgen import canvas
    import pandas as pd
    import reportlab.rl_config
    reportlab.rl_config.warnOnMissingFontGlyphs = 0
     
    def create_pdf_with_dataframe(file_path, dataframe, image_path):
        # Définir la taille de la page en mode paysage et A3 (plus grande)
        doc = SimpleDocTemplate(file_path, pagesize=landscape(A3), topMargin=30)
     
        styles = getSampleStyleSheet()
        style_heading = styles["Heading1"]
     
        # Créer un tableau pour le DataFrame
        table_data = [dataframe.columns.values.tolist()] + dataframe.values.tolist()
        table = Table(table_data)
     
        # Appliquer des styles au tableau
        table.setStyle(TableStyle([('ALIGN', (0, 0), (-1, -1), 'CENTER'),
                                   ('FONT', (0, 0), (-1, 0), 'Helvetica-Bold'),
                                   ('BACKGROUND', (0, 0), (-1, 0), 'grey'),
                                   ('TEXTCOLOR', (0, 0), (-1, 0), 'white'),
                                   ('GRID', (0, 0), (-1, -1), 1, 'black')]))
     
        # Ajouter le titre
        title = Paragraph("Facture détaillée", style_heading)
     
        # Construction des éléments
        elements = []
     
        # Ajouter l'image en haut à gauche
        image = Image(image_path, width=120, height=75)
     
     
        # Ajouter le tableau
        elements.append(image)
     
        # Ajouter le titre
        elements.append(title)
     
        # Ajouter le tableau
        elements.append(table)
     
        # Générer le PDF
        doc.build(elements)
     
    # Exemple d'utilisation :
    site_id = "XXX"
    account_code = "XXXX"
    df = data(site_id, account_code)  # Assurez-vous que cette fonction retourne un DataFrame
    image_path = "c:\\Users\\XXXX\\Desktop\\Factures detail\\img\\XXXX.png"  # Remplacez par le chemin de votre image
    create_pdf_with_dataframe("c:\\Users\\XXXX\\Desktop\\Factures detail\\example.pdf", df, image_path)

  13. #13
    Expert éminent
    Avatar de jurassic pork
    Homme Profil pro
    Bidouilleur
    Inscrit en
    Décembre 2008
    Messages
    3 954
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 3 954
    Points : 9 284
    Points
    9 284
    Par défaut
    Hello,
    pour positionner l'image à l'aide de SimpleDocTemplate, tu peux essayer d'écraser les attributs _offs_x et _offs_y de l'objet Image avant de l'ajouter.


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    image.__setattr__("_offs_x", 0)
    image.__setattr__("_offs_y", 0)
    Ami calmant, J.P
    Jurassic computer : Sinclair ZX81 - Zilog Z80A à 3,25 MHz - RAM 1 Ko - ROM 8 Ko

  14. #14
    Expert éminent
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    3 824
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Lead Dev Python
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 824
    Points : 7 120
    Points
    7 120
    Par défaut
    Citation Envoyé par débutant09
    auriez-vous une idée comment déplacer mon image en haut à gauche dans mon pdf s'il vous plaît ?
    Dans la construction de SimpleDocTemplate il est possible d'ajouter le paramètre onFirstPage (première page), onLaterPages (toutes les pages sauf la 1ère page) qui aura comme valeur un callback (qui appelé peut ajouter une image) et donc d'utiliser l'objet Canvas tout en gérant les pages de son document (doc.page).

    Par ex.

    Code python : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    def on_first_page(canvas, doc):
        # Dessiner des éléments spécifiques à la première page ici, si nécessaire
     
    # ...
     
    doc = SimpleDocTemplate("mon.pdf", onFirstPage=on_first_page)
    Celui qui trouve sans chercher est celui qui a longtemps cherché sans trouver.(Bachelard)
    La connaissance s'acquiert par l'expérience, tout le reste n'est que de l'information.(Einstein)

  15. #15
    Futur Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Décembre 2017
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2017
    Messages : 18
    Points : 9
    Points
    9
    Par défaut
    Merci Fred pour ta réponse, j'ai essayé de faire le code ci-dessous, je n'ai aucune erreur mais mon image n'est pas présente dans mon pdf :

    Code python : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    def header(canvas, doc):
     
        canvas.saveState()
     
        image_path = "c:\\Users\\XXXX\\Desktop\\Factures detail\\img\\XXXX_logo.png"  # Remplacez par le chemin de votre image
        # Ajouter l'image en haut à gauche
        image = Image(image_path, width=120, height=75) 
     
        h_logo = image.wrap(doc.width, doc.topMargin)
     
        # Height start
        h_logo = h_logo/10
     
        # Placer l'image en haut à gauche avec une marge
        image.drawOn(canvas, doc.leftMargin, doc.height + doc.topMargin - h_logo)
     
        canvas.restoreState()
     
     
    def create_pdf_with_dataframe(file_path, dataframe):
     
        # Définir la taille de la page en mode paysage et A3 (plus grande)
        doc = SimpleDocTemplate(file_path, pagesize=landscape(A3), topMargin=30, onFirst_page=header)
     
        styles = getSampleStyleSheet()
        style_heading = styles["Heading1"]
     
        # Créer un tableau pour le DataFrame
        table_data = [dataframe.columns.values.tolist()] + dataframe.values.tolist()
        table = Table(table_data)
     
        # Appliquer des styles au tableau
        table.setStyle(TableStyle([('ALIGN', (0, 0), (-1, -1), 'CENTER'),
                                   ('FONT', (0, 0), (-1, 0), 'Helvetica-Bold'),
                                   ('BACKGROUND', (0, 0), (-1, 0), 'grey'),
                                   ('TEXTCOLOR', (0, 0), (-1, 0), 'white'),
                                   ('GRID', (0, 0), (-1, -1), 1, 'black')]))
     
        # Ajouter le titre
        title = Paragraph("Facture détaillée", style_heading)
     
        # Construction des éléments
        elements = []
     
        # Ajouter le titre
        elements.append(title)
     
        # Ajouter le tableau
        elements.append(table)
     
        # Générer le PDF
        doc.build(elements)
     
     
    # Exemple d'utilisation :
    site_id = "XXX"
    account_code = "XXX"
    df = data(site_id, account_code)  # Assurez-vous que cette fonction retourne un DataFrame
    create_pdf_with_dataframe("c:\\Users\\XXX\\Desktop\\Factures detail\\example.pdf", df)

  16. #16
    Expert éminent
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    3 824
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Lead Dev Python
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 824
    Points : 7 120
    Points
    7 120
    Par défaut
    On pourrait pas simplement utiliser la méthode drawImage de l'objet Canvas ?

    https://docs.reportlab.com/reportlab.../ch2_graphics/

    EDIT: Pour l'image, je mettrai directement son chemin

    Citation Envoyé par doc
    The image parameter may be either a PIL Image object or an image filename.
    Celui qui trouve sans chercher est celui qui a longtemps cherché sans trouver.(Bachelard)
    La connaissance s'acquiert par l'expérience, tout le reste n'est que de l'information.(Einstein)

Discussions similaires

  1. Liens pour apprendre à créer des PDF
    Par pmboutteau dans le forum Autres langages
    Réponses: 6
    Dernier message: 20/09/2005, 18h16
  2. Configurer la langue des messages d'erreur
    Par Invité dans le forum PostgreSQL
    Réponses: 4
    Dernier message: 08/09/2005, 11h11
  3. [servlet] gestion des listes d'erreurs ?
    Par MatMeuh dans le forum Servlets/JSP
    Réponses: 8
    Dernier message: 27/10/2004, 10h19

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo