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

Qt Discussion :

Éditer un fichier ODT


Sujet :

Qt

  1. #1
    Invité
    Invité(e)
    Par défaut Éditer un fichier ODT
    Bonjour,

    Actuellement en 2ème année de BTS en développement informatique C++, je dois réaliser un projet de fin d'année. J'ai réaliser la totalité du projet hormis un point qui m'échappe complètement, même après des recherches sur internet (ou alors, je n'y comprend absolument rien et le but est tout de même de savoir m'en servir ).

    Je m'explique : Il m'est demandé de sauvegarder une facture sous format ODT. Pour se faire, je pense m'organiser comme ceci :
    1. Ouverture d'un fichier facture type sous format ODT.
    2. Edition de ce fichier
    3. Sauvegarde de ce fichier sous format ODT.

    Malheureusement, je n'arrive pas à trouver comment ne serait-ce que sauvegarder un fichier ODT et j'espère que vous aurez la réponse, s'il vous plaît .
    Bien entendu, le matériel étant le mien, je ne suis fermé à aucun ajout de librairies etc.

    Voici un code que j'ai réalisé pour tenter de créer un fichier ODT mais sans succès. En effet, si je remplace le nom de mon fichier en .txt, il n'y a aucun problème mais s'il est en .odt, lors de l'ouverture, Word m'indique qu'il n'arrive pas à ouvrir ce fichier et qu'il est peut être corrompu.

    (Je précise que le code se trouve dans une fonction booléenne et qu'il y a d'autres lignes de codes à côté, d'où les return)

    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
    //** CONST ABOUT THE BILL FILE
    const QString BILL_FILE_PATH = "C:/Users/micka/Desktop/";
    const QString BILL_FILE_NAME = "facture.odt";
     
    //** File managing
                    QFile bill(BILL_FILE_PATH + BILL_FILE_NAME);
     
                    //** opening the file
                    if (bill.open(QFile::WriteOnly | QFile::Text )){
     
                        //** starting editing the bill
                        QTextStream out(&bill);
                        out << "test" << endl;
                        bill.flush();
                        bill.close();
                        return true;
     
                    } else { // if file not opened
                        qDebug() << "Le fichier n'a pas pu être ouvert" << endl;
                        return false;
                    }
    En espérant que l'un d'entre vous ait une réponse à m'apporter, je vous remercie de votre attention et vous souhaite une bonne continuation

  2. #2
    Responsable Qt & Livres


    Avatar de dourouc05
    Homme Profil pro
    Ingénieur de recherche
    Inscrit en
    Août 2008
    Messages
    26 617
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur de recherche
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2008
    Messages : 26 617
    Points : 188 585
    Points
    188 585
    Par défaut


    De base, à ma connaissance, tu ne peux qu'écrire des fichiers ODT avec Qt, pas les modifier (avec https://doc.qt.io/qt-5/qtextdocumentwriter.html et https://doc.qt.io/qt-5/qtextdocumentwriter.html). Sinon, tu as quelques bibliothèques comme KD Reports (https://github.com/KDAB/KDReports) pour des fonctionnalités de création de fichier plus avancées.
    Vous souhaitez participer aux rubriques Qt (tutoriels, FAQ, traductions) ou HPC ? Contactez-moi par MP.

    Créer des applications graphiques en Python avec PyQt5
    Créer des applications avec Qt 5.

    Pas de question d'ordre technique par MP !

  3. #3
    Invité
    Invité(e)
    Par défaut
    Salut,

    Tout d'abord, merci de ta réponse, après quelques essaies, j'ai enfin réussi à écrire quelque chose sous un format ODT grâce à QTextDocument et QTextDocumentWriter.

    Malheureusement, un autre problème subsiste. Devant donc écrire mon fichier de A à Z, j'ai réussi à ajouter une image à mon fichier ODT lors de sa création en passant par la methode setHtml.
    Cependant, après de multiples tentatives, je n'arrive pas à comprendre comment changer la taille de mon écriture dans le fichier ODT. j'ai beau essayé plusieurs choses, rien ne vas, il prend toujours la taille "11". Voici mon code :

    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
    //** Creating the container
                    QTextEdit* editor = new QTextEdit();
                    QTextDocument* bill = new QTextDocument(editor);
                    QTextCursor cursor(bill);
     
                    //** Adding the content
                    bill->setHtml("<img src=\":/ressources/rsrc/logo.png\" width=\"266\" height=\"132\"/>"
                                  "<font face=\"calibri\" color=\"black\"><b><big><big><big>Facture d'eau chaude</big></big></big></b></font>");
                    //** Debogging
                    editor->setDocument(bill);
                    editor->setWindowTitle("Texte de titre");
                    editor->resize(320,480);
                    editor->show();
     
                    //** Writing the container into the file
                    QTextDocumentWriter writer(BILL_FILE_PATH + BILL_FILE_NAME);
                    writer.write(bill);
    J'ai essayé la balise <big> ou tout simplement <font size="2">Facture d'eau chaude</font> mais ça ne fonctionne pas non plus, je ne vois vraiment pas comment modifier la taille.

    Est-ce que quelqu'un aurait déjà eu à modifier la taille lors d'une sauvegarde d'un fichier sous ce format et aurait la réponse s'il vous plaît ?

    Merci à vous d'avoir prit le temps de me lire.
    Dernière modification par Invité ; 25/04/2019 à 18h16.

  4. #4
    Responsable Qt & Livres


    Avatar de dourouc05
    Homme Profil pro
    Ingénieur de recherche
    Inscrit en
    Août 2008
    Messages
    26 617
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur de recherche
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2008
    Messages : 26 617
    Points : 188 585
    Points
    188 585
    Par défaut
    Tu peux aussi utiliser QTextCursor pour l'édition (exemple : https://qt-quarterly.developpez.com/qq-27/ecrire-odf/). Pour le texte formaté, tu aurais alors https://doc.qt.io/qt-5/qtextcursor.html#insertText-1.

    Sinon, ton code HTML ressemble furieusement aux débuts du Web (années 1990, plutôt la première moitié). Pour faire plus moderne, utilise du CSS (ça résoudrait peut-être ton problème) :

    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    <p style="font-size:11px">Un paragraphe. <span style="font-size:100px">Du texte en très grand.</span></p>
    Vous souhaitez participer aux rubriques Qt (tutoriels, FAQ, traductions) ou HPC ? Contactez-moi par MP.

    Créer des applications graphiques en Python avec PyQt5
    Créer des applications avec Qt 5.

    Pas de question d'ordre technique par MP !

  5. #5
    Invité
    Invité(e)
    Par défaut
    Après encore quelques recherches, j'ai également trouvé le QTextCursor que j'ai utilisé. J'ai conclu, peut être hâtivement qu'il était difficile ou impossible de modifier la taille du texte par le code html, et après avoir essayé avec ton code css, il s'avère que dans le QTextEdit, c'est en très grand, comme dans mon code html, mais dans le fichier ODT, c'est toujours en taille 11.

    Heureusement, j'ai réussi à trouver une solution :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    QTextCharFormat format;
    format.setFont(QFont("Calibri"));
    format.setFontPointSize(18);
    cursor.insertText("Facture d'eau chaude", format);
    J'utilise alors les méthodes de la classe QTextCursor pour un peu de mise en page, centrer mes textes etc.

    Et oui je n'ai fais que très peu d'HTML d'où mon "vieil" HTML, je n'aime pas du tout les langages de balisage, mais ce n'est qu'un avis
    Merci encore pour ton aide en tout cas !

  6. #6
    Responsable Qt & Livres


    Avatar de dourouc05
    Homme Profil pro
    Ingénieur de recherche
    Inscrit en
    Août 2008
    Messages
    26 617
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur de recherche
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2008
    Messages : 26 617
    Points : 188 585
    Points
    188 585
    Par défaut
    Citation Envoyé par Naxe67 Voir le message
    Et oui je n'ai fais que très peu d'HTML d'où mon "vieil" HTML, je n'aime pas du tout les langages de balisage, mais ce n'est qu'un avis
    Ne pas aimer n'est pas une raison : ça m'arrive d'écrire du code Java, langage que je n'apprécie pas vraiment, mais je tente de faire au plus propre avec les possibilités offertes par les dernières versions .

    Sinon, je vois que tu utilises Calibri : cette police sera-t-elle disponible sur tous les systèmes où les ODT devront être lus ?
    Vous souhaitez participer aux rubriques Qt (tutoriels, FAQ, traductions) ou HPC ? Contactez-moi par MP.

    Créer des applications graphiques en Python avec PyQt5
    Créer des applications avec Qt 5.

    Pas de question d'ordre technique par MP !

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

Discussions similaires

  1. [Système] Éditer un fichier .xml
    Par WeDgEMasTeR dans le forum Langage
    Réponses: 8
    Dernier message: 26/05/2006, 16h36
  2. Lien d'édition vers un fichier odt
    Par nicou50 dans le forum Langage
    Réponses: 2
    Dernier message: 08/03/2006, 13h38
  3. Lien d'édition vers un fichier odt
    Par nicou50 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 03/03/2006, 17h50
  4. [Cygwin] : comment éditer un fichier texte ?
    Par Invité dans le forum Autres éditeurs
    Réponses: 6
    Dernier message: 13/12/2005, 21h43
  5. Réponses: 2
    Dernier message: 09/12/2005, 16h58

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