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

C++Builder Discussion :

Impression avec Calc Open office


Sujet :

C++Builder

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Janvier 2009
    Messages
    24
    Détails du profil
    Informations forums :
    Inscription : Janvier 2009
    Messages : 24
    Par défaut Impression avec Calc Open office
    Bonjour.
    Après la sauvegarde... l'impression.

    Sur le FAQ C++ Builder j'ai trouvé le code suivant qui permet d'imprimer une feuille calc open office
    int Bounds[2] = {0,-1};
    vOOoDocument.OleFunction("print", VarArrayCreate(Bounds, 1, varVariant));
    Voici ce que fait mon programme :
    -Ouverture d'un fichier existant
    -Remplissage des casses des tableaux
    -Impression
    -Fermeture du fichier

    Le problème c'est qu'il ne m'imprime que la feuille qui s'affiche à l'ouverture du fichier. Mon fichier ce compose de trois feuilles, et je souhaite imprimer les 3. Comment faire?

    Merci

  2. #2
    Membre confirmé

    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2002
    Messages : 21
    Par défaut
    Je vous transmets une adaptation d'une portion de code que j'utilise ; j'ai modifié les noms des variables pour qu'elles correspondent à celles de la FAQ. Je ne l'ai pas testé en l'état.
    Ceci doit vous permettre d'inclure les pages voulues en utilisant le même paramétrage que celui des boîtes de dialogue d'impression.

    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
     
    Variant vOOoPrCount = vOOoOpenOffice.OleFunction("Bridge_GetStruct","com.sun.star.beans.PropertyValue");
    Variant vOOoPrPages = vOOoOpenOffice.OleFunction("Bridge_GetStruct","com.sun.star.beans.PropertyValue");
     
    vOOoPrCount.OlePropertySet("Name","Count");
    vOOoPrCount.OlePropertySet("Value",1); //Nombre d'ensembles de pages à imprimer
     
    vOOoPrPages.OlePropertySet("Name","Pages");
    vOOoPrPages.OlePropertySet("Value","1-4");//Pages à imprimer ; "1-" devrait convenir dans votre cas
     
    int Bounds2[2] = {0,1};// Selon le nombre de propriétés à utiliser;
    //int Bounds2[2] = {0,3};// pour 4 props par ex.
    Variant vOOoPrProps = VarArrayCreate(Bounds2, 1, varVariant);
     
    vOOoPrProps.PutElement(vOOoPrCount,0);
    vOOoPrProps.PutElement(vOOoPrPages,1);
    OOoDocument.OleFunction("Print",vOOoPrProps);
    Le "Guide du développeur" disponible sur le site OOo est très complet quant aux options disponibles (format papier, orientation, collation...)

    Un problème toutefois : lorsque je demande l'impression d'un doc 2 fois (Count = 2), l'imprimante me sort 4 exemplaires ; si j'en demande n j'en obtiens n² ! Y'a comme un conflit avec Windows je pense. Blondelle a-t-il testé cela ?

  3. #3
    Rédacteur
    Avatar de blondelle
    Homme Profil pro
    Inscrit en
    Mars 2006
    Messages
    2 738
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 738
    Par défaut
    Salut TABZ
    Blondelle a-t-il testé cela ?
    Non je n'ai pas fait de teste, je n'utilise que tres peu OpenOffice, juste une idee comme cela il serait peut etre interressant de recuperer la valeur renvoyee par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    vOOoPrProps.PutElement(vOOoPrCount,0);
    Il doit bien y avoir la possibilite de recuperer un Variant sous forme d'une chaine

  4. #4
    Membre averti
    Inscrit en
    Janvier 2009
    Messages
    24
    Détails du profil
    Informations forums :
    Inscription : Janvier 2009
    Messages : 24
    Par défaut
    Merci TABZ, le code que vous m'avez donné est assez intéressant, mais il ne permet malheureusement pas de résoudre mon problème, car mon problème ne se situe pas au niveau des pages, mais au niveau des feuilles (Je sais pas si cette phrase est vraiment claire). J'ai trois feuilles de calcule, mais chacune tient sur une page A3.

    Par contre quand je demande l'impression d'un doc 2 fois (Count = 2), il ne me sort qu'un exemplaire , à mon avis sa doit venir du faite que j'utilise l'imprimante virtuel pdf creator.

    Non je n'ai pas fait de teste, je n'utilise que tres peu OpenOffice, juste une idee comme cela il serait peut etre interressant de recuperer la valeur renvoyee par
    Code :

    vOOoPrProps.PutElement(vOOoPrCount,0);
    Il doit bien y avoir la possibilite de recuperer un Variant sous forme d'une chaine
    Dans quel but?? (je suis complètement ignorant )

  5. #5
    Membre confirmé

    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2002
    Messages : 21
    Par défaut
    Bonjour.

    Blondelle : j'ai fait référence à vous parce que sur ce forum vous me semblez être celui qui a le plus fait avancer le sujet de l'OLE automation avec OpenOffice ; vous auriez pu avoir été confronté à ce problème.
    Suite à ma réponse d'hier, j'ai refait une recherche sur un forum OOo et j'ai enfin une reponse : ce serait un bug identifié de OOo, depuis la version 2.4.0 corrigé dans la version 3.1 !

    Bruiser : effectivement, avec PDF Creator, le nombre de docs (Count) est inopérant. Par contre, comme je le disais précédemment, il est possible de changer le format de page à imprimer ; c'est un autre processus décrit dans le Guide du développeur OOo, que j'ai déjà utilisé ; j'essaierai de le retrouver ce soir, mais je pense qu'avec la FAQ et le code fourni ici vous devriez pouvoir vous en sortir.
    Bon courage.

  6. #6
    Rédacteur
    Avatar de blondelle
    Homme Profil pro
    Inscrit en
    Mars 2006
    Messages
    2 738
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 738
    Par défaut
    Blondelle : j'ai fait référence à vous parce que sur ce forum vous me semblez être celui qui a le plus fait avancer le sujet de l'OLE automation avec OpenOffice
    C'est vrai que j'ai traduit une partie des exemples Delphi, je n'ai d'ailleur pas su tout traduire, pour mon travail j'utilise la suite MsOffice, les codes VB sont plus facile a traduire pour moi.
    J'ai fait un essai chez moi avec la version 3.0 voici ce que j'ai fait
    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
     
    Variant vOOoPrCount = vOOoOpenOffice.OleFunction("Bridge_GetStruct","com.sun.star.beans.PropertyValue");
    Variant vOOoPrCollate = vOOoOpenOffice.OleFunction("Bridge_GetStruct","com.sun.star.beans.PropertyValue");
    Variant vOOoPrPages = vOOoOpenOffice.OleFunction("Bridge_GetStruct","com.sun.star.beans.PropertyValue");
     
    vOOoPrCount.OlePropertySet("Name","Copies");
    vOOoPrCount.OlePropertySet("Value",1); //Nombre d'ensembles de pages à imprimer
    vOOoPrCollate.OlePropertySet("Name", "Collate");
    vOOoPrCollate.OlePropertySet("Value", true);
     
    int Bounds2[2] = {0,1};// Selon le nombre de propriétés à utiliser;
    Variant vOOoPrProps = VarArrayCreate(Bounds2, 1, varVariant);
    vOOoPrProps.PutElement(vOOoPrCount,0);
    vOOoPrProps.PutElement(vOOoPrCollate,1);
     
    vOOoDocument.OleFunction("Print",vOOoPrProps);

Discussions similaires

  1. Delphi et calc open office
    Par sys1 dans le forum Débuter
    Réponses: 2
    Dernier message: 25/12/2010, 15h27
  2. javascript dans calc (open office)
    Par litchi1234fr dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 17/02/2009, 13h55
  3. Enregistrer un fichier Calc Open office
    Par Bruiser dans le forum C++Builder
    Réponses: 18
    Dernier message: 15/02/2009, 17h22
  4. Peux-t'on exécuter des macros excel avec Open Office
    Par Lexot2 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 04/09/2006, 22h30
  5. Tableur Calc Open Office
    Par patrickbruneau dans le forum Delphi
    Réponses: 2
    Dernier message: 30/08/2006, 18h58

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