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

Discussion :

Nouvelle page automatique avec QPdfWriter

  1. #1
    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 Nouvelle page automatique avec QPdfWriter
    à tous,

    J'ai besoin de créer un document PDF contenant du texte et un tableau.
    J'aimerai automatiser la création d'une nouvelle page lorsque ceci est nécessaire.

    Auriez-vous une piste pour m'aider ?

    D'avance merci.

    ++

    J
    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

  2. #2
    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
    Hello,

    Fait pas bon vieillir ... j'avais oublié que je m'étais déjà exercer à ceci avec PyQt. La solution est de passer avec ce morceau de code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    while (currentRect.intersects(contentRect)){
            doc.drawContents(&painter, currentRect);
            count++;
            currentRect.translate(0, currentRect.height());
            painter.restore();
            painter.drawText(10, 10, QString("Header %1").arg(count));
            painter.drawText(10, 12000, html);
            painter.save();
            painter.translate(0, - currentRect.height() * count + 28);
            if (currentRect.intersects(contentRect)){
                writer.newPage();
            }
        }
    où doc est un QTextDocument, painter un QPainter et writer mon QPdfWriter.
    Cette méthode est très pratique car elle permet d'associer des painter.drawText avec le doc.drawContent par exemple. Cependant je rencontre un petite souci.
    En effet, le saut de page se fait un peu n'importe comment et il n'est pas impossible qu'une ligne de texte soit à cheval sur deux pages notamment si je passe par un setHtml() pour insérer des infos dans le QTextDocument.

    Une autre solution serait d'utiliser QTextDocument::print(QPrinter*) qui va tout gérer tranquillement. Les quelques tests que j'ai pu faire montrent que le saut de page est "propre", mais on perd beaucoup en personnification possible.

    De plus passer par un QPrinter pour créer un pdf alors qu'il existe QPdfWriter ça me dérange un peu ... ne pas utiliser ce qui semble prévu est dommage je trouve.

    La dernière solution pour faire ce que je veux serai de tout gérer de A à Z avec QPdfWriter, QPainter et tout un tas de drawText, drawRect, ... personnification maximale mais à mon humble avis très très long à mettre en place.


    Avez-vous des avis, conseils à me donner ?

    D'avance merci à tous et bonne nuit.

    ++

    J
    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

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 1
    Dernier message: 12/11/2007, 16h49
  2. ouvrir un lien dans nouvelle page avec css
    Par musicann dans le forum Mise en page CSS
    Réponses: 3
    Dernier message: 13/06/2007, 14h59
  3. Réponses: 3
    Dernier message: 07/06/2006, 21h35

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