[VB] Imprimer un document OOo

Vos meilleures macros et portions de code sont publiées dans cette section.
Aucun support sur une question de programmation ici !

Modérateur : Vilains modOOs

Règles du forum
Aucune question dans cette section !
Celle-ci rassemble les meilleures macros et portions de code. Vous pouvez en revanche commenter ou argumenter le code exposé. Vous pouvez même remercier l'auteur (cela fait toujours plaisir) en indiquant par exemple dans quel cadre ou contexte vous en avez eu l'utilité.
Si vous avez à poster quelque chose, faites-le depuis la section Macros et API et demandez à un modérateur de l'y déplacer.
EvilNemo
NOOuvel adepte
NOOuvel adepte
Messages : 15
Inscription : 27 juin 2007 12:40
Localisation : Bayeux/Caen/Nancy

Message par EvilNemo »

[VB 6.0] Imprimer un document OOo

Bonjour,

Je veux juste poster un petit bout de code pour ceux qui, comme moi, ont cherché un bon moment comment imprimer un document odt. En effet, pour une raison qui me semble un peu floue, il semblerai que la méthode "print" de l'interface XPrintable ne passe pas en VB. (Il y a surment un conflit avec une méthode interne a Visual Studio qui se nomme elle aussi print mais qui prend d'autres arguments)

C'est pourquoi, j'utilise la méthode CallByName qui va se charger d'invoquer la méthode print.

Code : Tout sélectionner


    Dim osm As Object
    Dim PrintProperties(3) As Object
    
    CmDiag.CancelError = True 'Envoie d'une erreur si le bouton Cancel est pressé
    On Error GoTo ErrHandler
    CmDiag.ShowPrinter
    Set osm = CreateObject("com.sun.star.ServiceManager")
    
    'Définition de l'imprimante à utiliser pour l'impression : par défaut
    Set PrintProperties(0) = osm.Bridge_GetStruct("com.sun.star.beans.PropertyValue")
    PrintProperties(0).Name = "PrinterName"
    PrintProperties(0).Value = "Default"
    
    'Nombre de copies du document à imprimer
    Set PrintProperties(1) = osm.Bridge_GetStruct("com.sun.star.beans.PropertyValue")
    PrintProperties(2).Name = "CopyCount"
    PrintProperties(2).Value = CmDiag.Copies
    
    'Lancement de l'impression
    CallByName docOOo, "print", VbMethod, PrintProperties
    
    Exit Sub
 
ErrHandler:
    ' Bouton Cancel pressé
    Exit Sub
Vous remarquerez surement l'objet CmDiag. Il s'agit en fait d'un objet de type "CommonDialog" (objet qui doit être ajouté sur une frame) qui permet d'afficher des boites de dialogues, telles que la boite de dialogue permettant le choix d'une imprimante et le paramètrage de cette même imprimante.

Seulement, le seul interêt de cette boite de dialogue est qu'elle ne fait que redéfinir l'imprimante par défaut qui est ensuite utilisée pour l'impression. A la rigueur, on peut aussi récupérer le nombre de copies que l'on veut faire.

Bonne journée.
OOo 2.1 && Win XP SP2