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

PyQt Python Discussion :

Afficher un fichier PDF dans une fenêtre


Sujet :

PyQt Python

  1. #1
    Membre actif
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Octobre 2008
    Messages
    330
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2008
    Messages : 330
    Points : 207
    Points
    207
    Par défaut Afficher un fichier PDF dans une fenêtre
    Bonjour,

    Existe t-il un moyen simple d'afficher dans une fenetre un fichier pdf que j'ai généré avec ReportLab ? En fin de compte je voudrais réaliser un "aperçu avant impression" !
    Merci d'avance pour vos pistes.
    Cordialement,

  2. #2
    Membre habitué
    Profil pro
    Inscrit en
    Août 2009
    Messages
    195
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2009
    Messages : 195
    Points : 156
    Points
    156
    Par défaut
    Bonjour

    essayez avec ceci

    http://code.google.com/p/python-poppler-qt4/

    j'ai voulu tester mais pas encore eu le temps..

  3. #3
    Membre actif
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Octobre 2008
    Messages
    330
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2008
    Messages : 330
    Points : 207
    Points
    207
    Par défaut
    Je te remercie Nico pour ton lien.
    J'ai omis de dire que je travaillais avec Pyside...
    et je n'arrive pas à installer le module ...
    Je vais creuser un peu pour réussir l'installation.
    Je suis néanmoins toujours à l'écoute pour d'éventuelles autres pistes.
    @+

  4. #4
    Membre habitué
    Profil pro
    Inscrit en
    Août 2009
    Messages
    195
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2009
    Messages : 195
    Points : 156
    Points
    156
    Par défaut
    au fait..

    serait ce contraignant d'utiliser les fonctionnalités pdf de pyqt/pyside au lieu de reportlab?

    Vous pourriez avant d'imprimer en pdf, utiliser un widget de visualisation (QGraphicScene entre autre) et l'imprimer en pdf ensuite..

  5. #5
    Membre actif
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Octobre 2008
    Messages
    330
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2008
    Messages : 330
    Points : 207
    Points
    207
    Par défaut
    Nico tout ca m'a l'air fort intéressant
    C'est vrai qu'en fin de compte j'ai juste besoin de visualiser et d'imprimer, éventuellement, une liste de données ...
    Je suis preneur pour tout complément d'information.
    @+

  6. #6
    Rédacteur/Modérateur

    Avatar de Jiyuu
    Homme Profil pro
    Développeur amateur
    Inscrit en
    Janvier 2007
    Messages
    2 456
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur amateur
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 2 456
    Points : 6 789
    Points
    6 789
    Billets dans le blog
    15
    Par défaut


    Tout dépend ce que tu veux visualiser et imprimer je pense... mais comme ça sans trop réfléchir je pourrais te proposer de visualiser le contenu dans un QWebView avant de l'imprimer en pdf.

    En effet Qt, et par conséquent PySide et PyQt permette d'imprimer un pdf depuis un code html.

    http://pyqt.developpez.com/telecharg...un-fichier-pdf

    Sinon, dans QPrinter & co tu dois aussi pouvoir y trouver ton bonheur
    Initiation à Qt Quick et QML : Partie 1 - Partie 2
    En cas de besoin, pensez à la
    Mon site et mes tutoriaux sur Developpez.com
    Pas de question technique par MP... Les forums sont là pour ça

  7. #7
    Membre actif
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Octobre 2008
    Messages
    330
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2008
    Messages : 330
    Points : 207
    Points
    207
    Par défaut
    En fait, je veux simplement visualiser, avec une mise en forme, et pouvoir imprimer le contenu d'informations issu d'une base Sqlite manipulée avec SqlAlchemy.
    @+

  8. #8
    Expert éminent
    Avatar de tyrtamos
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2007
    Messages
    4 462
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2007
    Messages : 4 462
    Points : 9 249
    Points
    9 249
    Billets dans le blog
    6
    Par défaut
    Bonjour,

    Dans un programme, j'utilise PyQt4 pour créer des pages pdf (plusieurs centaines), qui sont des courriers multipages qui contiennent des données issues d'une base de données sqlite3.

    Mais je ne les visualise / imprime pas directement: le programme appelle le reader de pdf par défaut de l'OS pour visualiser les pages et si nécessaire les imprimer. C'est très simple et ça marche très bien. Ceci sous Windows et sous Linux (je n'ai pas encore essayé sous MacOSX).

    Mais même si je n'envisage pas de changer cela, je suis très intéressé par toute solution de visualisation et d'impression de pages pdf sous Qt.
    Un expert est une personne qui a fait toutes les erreurs qui peuvent être faites, dans un domaine étroit... (Niels Bohr)
    Mes recettes python: http://www.jpvweb.com

  9. #9
    Membre actif
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Octobre 2008
    Messages
    330
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2008
    Messages : 330
    Points : 207
    Points
    207
    Par défaut
    Jiyuu j'ai voulu tester ta solution qui me parait intéressante mais je n'obtiens qu'une page bien vide :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
            ...
            self.preview = QtWebKit.QWebView()
            self.preview.load(QtCore.QUrl().fromLocalFile("form.pdf"))
            ...
    form.pdf est le fichier pdf et il est dans le même répertoire que l'application.

    Est-ce que j'ai loupé quelque chose ?
    Merci
    @+

  10. #10
    Expert éminent

    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    4 300
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 300
    Points : 6 780
    Points
    6 780
    Par défaut
    Salut,

    Tout d'abord QtCore.QUrl().fromLocalFile() demande le chemin complet et non le chemin relatif. En tous cas sous Linux.

    Question : quel est la forme du document avant transformation en pdf ?

  11. #11
    Membre actif
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Octobre 2008
    Messages
    330
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2008
    Messages : 330
    Points : 207
    Points
    207
    Par défaut
    Bonjour VinsS,
    Je l'ai généré avec ReportLab.
    @+

  12. #12
    Expert éminent

    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    4 300
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 300
    Points : 6 780
    Points
    6 780
    Par défaut
    Oui, oui, j'avais bien lu, mais était-ce un document créé avec Pyside ?

    PlainText, Document, Image ?

  13. #13
    Rédacteur/Modérateur

    Avatar de Jiyuu
    Homme Profil pro
    Développeur amateur
    Inscrit en
    Janvier 2007
    Messages
    2 456
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur amateur
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 2 456
    Points : 6 789
    Points
    6 789
    Billets dans le blog
    15
    Par défaut
    La question de VinsS est très pertinente car elle peut jouer sur la solution choisie.

    Pour ma part, voila ce que je propose avec quelques difficultés possible notamment pour les sauts de pages, mais rien d'insurmontable je pense.

    Si tu peux :
    • oublie Reportlab ;
    • génère un .html du fichier que tu veux ;
    • visualise ton .html ;
    • transforme le en .pdf ;


    Exemple :

    Code HTML :
    Code html : 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
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
    "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    <link rel="stylesheet" type="text/css" href="styles.css">
    </head>
    <body>
    <img src= "Qt-logo.png">
    <div id="t1">
    <b>Bonjour {{nom}}</b>
    <br>
    ceci est un test
    </div>
    </body>
    </html>

    Code de visualisation (à retravailler pour l'affichage des balises de modif):
    Code python : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    from sys import exit
    from PySide.QtGui import QApplication
    from PySide.QtWebKit import QWebView
     
    app = QApplication([])
    webview = QWebView()
     
    webview.show()
     
    webview.load("index.html")
     
    exit(app.exec_())

    Code d'impression :
    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
    # coding: utf-8 -*-
    import sys
    from PySide import QtGui, QtCore
     
    Appli=QtGui.QApplication(sys.argv)
    printer=QtGui.QPrinter()
    printer.setOutputFileName("essai.pdf")
    doc = QtGui.QTextDocument()
    ressource = doc.loadResource(QtGui.QTextDocument.HtmlResource, QtCore.QUrl("index.html"))
    ressource.replace("{{nom}}", "Toto")
    doc.setHtml(str(ressource))
    doc.print_(printer)
     
    doc.print_(printer)


    Pour générer et bien gérer les html tu peux aussi te servir d'XML...

    Autre solution : afficher du html dans un QTextEdit en passant par QTextDocument. Seul interrogation que je ne peux pas tester dans l'immédiat c'est l'affichage éventuelle d'autre chose que du texte...

    L'avantage c'est que tout ça peut être fait avec PySide sans aucun autre import.

    [EDIT]
    Ça passe les images dans un QTextEdit... mais je te laisse chercher
    Initiation à Qt Quick et QML : Partie 1 - Partie 2
    En cas de besoin, pensez à la
    Mon site et mes tutoriaux sur Developpez.com
    Pas de question technique par MP... Les forums sont là pour ça

  14. #14
    Membre actif
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Octobre 2008
    Messages
    330
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2008
    Messages : 330
    Points : 207
    Points
    207
    Par défaut
    Désolé pour le silence ... mais ma ligne telephonique était HS.
    JiYuu, après réflexion je pense que ton approche devrait convenir. J'étais parti avec ReportLab car j'avais peut être pas assez fouillé avec PySide. La manipulation de QTextDocument parait intéressante et je vais creusé par là. Il faut juste que je l'alimente à partir de requete SqlAlchemy. J'aurai ensuite des images à insérer mais on verra après ...
    Ensuite effectivement l'impression ou la sauvegarde en pdf devrait être aisée.
    Je reviens vers vous après mes essais.
    Merci encore de vos conseils éclairés.
    @+

  15. #15
    Rédacteur/Modérateur

    Avatar de Jiyuu
    Homme Profil pro
    Développeur amateur
    Inscrit en
    Janvier 2007
    Messages
    2 456
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur amateur
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 2 456
    Points : 6 789
    Points
    6 789
    Billets dans le blog
    15
    Par défaut


    Si on a pu t'aider c'est le principal. Pense à mettre le sujet en résolu si tu penses que c'est le cas.
    Tu pourras toujours en ouvrir un autre si ton problème se déplace.

    @+
    Initiation à Qt Quick et QML : Partie 1 - Partie 2
    En cas de besoin, pensez à la
    Mon site et mes tutoriaux sur Developpez.com
    Pas de question technique par MP... Les forums sont là pour ça

Discussions similaires

  1. Ouvrir un fichier PDF dans une fenêtre delphi
    Par Wilco dans le forum Langage
    Réponses: 2
    Dernier message: 24/02/2021, 08h31
  2. Afficher un fichier PDF dans une Winform
    Par Hiraa dans le forum VB.NET
    Réponses: 1
    Dernier message: 11/01/2010, 21h47
  3. Afficher un PDF dans une fenêtre
    Par chpounz dans le forum wxPython
    Réponses: 3
    Dernier message: 19/03/2009, 19h36
  4. Réponses: 0
    Dernier message: 25/12/2008, 17h44
  5. [VB.Net] afficher un fichier pdf dans une page WEB
    Par kasaw dans le forum ASP.NET
    Réponses: 3
    Dernier message: 25/08/2008, 16h02

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