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

VB.NET Discussion :

Impression spécifique sous Visual Basic Express 2008


Sujet :

VB.NET

  1. #1
    Candidat au Club
    Inscrit en
    Octobre 2008
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 4
    Points : 2
    Points
    2
    Par défaut Impression spécifique sous Visual Basic Express 2008
    Bonjour,

    Depuis plusieurs semaines, je scrute les sites afin de trouver solution à ma question mais sans résultat.

    J'ai créé une application sous VBE 2008 qui permet de visionner des fichiers .doc ou Pdf en cliquant sur l'intitulé du fichier via un bouton. Tout fonctionne correctement.

    Mais là, je coince. Je souhaite lancer l'impression de l'ensemble de mes fichiers en cliquant sur un bouton "Impression".
    Grâce aux API, j'ai réussi à définir l'imprimante par défaut à utiliser et l'impression se lance correctement. Mais je veux imprimer des pages en couleurs et d'autres en noir et blanc.

    J'ai vu qu'il fallait utiliser les fonctions OpenPrinter, ClosePrinter, SetPrinter avec les structures Devmode, Info_2, etc .... Mais je ne sais comment les utiliser et les morceaux de code que j'ai trouvé ne me permettent pas de le faire.

    Aussi, je me tourne vers vous. Merci d'avance.

  2. #2
    Expert éminent sénior Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 175
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 175
    Points : 25 116
    Points
    25 116
    Par défaut
    ce n'est pas si simple que ca, windows par défaut ne sait pas imprimer un .doc ou un pdf, les .doc, c'est word qui les imprime et les pdf c'est un logiciel capable de les lire

    donc les .doc, tu peux avoir une variable de type word et lui demander d'imprimer (code qui ressemble à du vba) (il faut surement que word soit installé sur la machine cliente)

    pour les pdf, il y a des dll qui doivent le faire aussi

  3. #3
    Candidat au Club
    Inscrit en
    Octobre 2008
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 4
    Points : 2
    Points
    2
    Par défaut
    Oui j'ai vu tout ça. J'ai créé une partie de code en m'aidant de ce que j'avais pu trouver.

    Voici mon code pour l'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
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    Module ModuleImpression
     
        Public Structure DEVMODE
            <VBFixedString(CCHDEVICENAME), System.Runtime.InteropServices.MarshalAs(System.Runtime.InteropServices.UnmanagedType.ByValArray, SizeConst:=CCHDEVICENAME)> Public dmDeviceName() As Char
            Dim dmSpecVersion As Short
            Dim dmDriverVersion As Short
            Dim dmSize As Short
            Dim dmDriverExtra As Short
            Dim dmFields As Integer
            Dim dmOrientation As Short
            Dim dmPaperSize As Short
            Dim dmPaperLength As Short
            Dim dmPaperWidth As Short
            Dim dmScale As Short
            Dim dmCopies As Short
            Dim dmDefaultSource As Short
            Dim dmPrintQuality As Short
            Dim dmColor As Short
            Dim dmDuplex As Short
            Dim dmYResolution As Short
            Dim dmTTOption As Short
            Dim dmCollate As Short
            <VBFixedString(CCHFORMNAME), System.Runtime.InteropServices.MarshalAs(System.Runtime.InteropServices.UnmanagedType.ByValArray, SizeConst:=CCHFORMNAME)> Public dmFormName() As Char
            Dim dmLogPixels As Short
            Dim dmBitsPerPel As Integer
            Dim dmPelsWidth As Integer
            Dim dmPelsHeight As Integer
            Dim dmDisplayFlags As Integer
            Dim dmDisplayFrequency As Integer
        End Structure
     
        Public Structure PRINTER_DEFAULTS
            Dim pDatatype As Integer
            Dim pDevMode As Integer
            Dim DesiredAccess As Integer
        End Structure
     
        Public Declare Function OpenPrinter Lib "winspool.drv" Alias "OpenPrinterA" (ByVal pPrinterName As String, ByRef phPrinter As Integer, ByRef pDefault As PRINTER_DEFAULTS) As Integer
        Public Declare Function SetPrinter Lib "winspool.drv" Alias "SetPrinterA" (ByVal hPrinter As String, ByVal Level As Integer, ByRef pPrinter As Integer, ByVal Command_Renamed As Integer) As Integer
        Public Declare Function ClosePrinter Lib "winspool.drv" (ByVal hPrinter As Integer) As Integer
        Private Declare Function GetPrinter Lib "winspool.drv" Alias "GetPrinterA" (ByVal hPrinter As Integer, ByVal Level As Integer, ByRef pPrinter As Byte, ByVal cbBuf As Integer, ByRef pcbNeeded As Integer) As Integer
     
        Public Sub ImprimerFichierWord(ByVal fileName As Object, ByVal visible As Boolean, ByVal NbCopies As Integer, ByVal PlagePages As String)
            Try
                Dim aWord As Word.Application
                Dim aDoc As Word.Document
                aWord = New Word.Application()
                aWord.Visible = visible
                Dim Missing As Object = System.Reflection.Missing.Value
                aDoc = aWord.Documents.Open(fileName, Missing, Missing, Missing, Missing, Missing, Missing, Missing, Missing, Missing, Missing, Missing)
                Dim myTrue As Object = True
                Dim myFalse As Object = False
                Dim missingValue As Object = Type.Missing
                Dim range As Object = Word.WdPrintOutRange.wdPrintRangeOfPages
                Dim items As Object = Word.WdPrintOutItem.wdPrintDocumentContent
                Dim copies As Object = NbCopies
                Dim pages As Object = PlagePages
                Dim pageType As Object = Word.WdPrintOutPages.wdPrintAllPages
                aDoc.PrintOut(myFalse, myFalse, range, missingValue, missingValue, missingValue, items, copies, pages, pageType, myFalse, myTrue, _
                  missingValue, myFalse, missingValue, missingValue, missingValue, missingValue)
                aWord.Quit(myFalse, missingValue, missingValue)
                aWord = Nothing
                aDoc = Nothing
            Catch
                MessageBox.Show("Erreur lors de l'ouverture du document")
            End Try
        End Sub
    J'ai récupéré des bouts de code au gré de mes recherches sur les sites. J'en ai fait un module.

    Quand j'appelle la fonction ImprimerFichierWord, l'impression se fait sur l'imprimante que j'ai choisi avec le SetDefautPrinter.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ImprimerFichierWord("C:\NomFichier.doc", False, 1, "1, 6-7")
    Mais je ne sais pas comment changer les paramètres de l'imprimante (color) avec le OpenPrinter, puis SetPrinter.

  4. #4
    Expert éminent sénior Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 175
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 175
    Points : 25 116
    Points
    25 116

  5. #5
    Candidat au Club
    Inscrit en
    Octobre 2008
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 4
    Points : 2
    Points
    2
    Par défaut
    Je vais jeter un coup d'oeil.

    Merci

Discussions similaires

  1. Réponses: 3
    Dernier message: 20/05/2010, 14h34
  2. Visual Basic Express 2008 & controls.add
    Par loicremy dans le forum VB.NET
    Réponses: 7
    Dernier message: 19/03/2009, 16h38
  3. Réponses: 4
    Dernier message: 23/01/2009, 11h06
  4. Visual basic express 2008 et bdd
    Par dreamkod dans le forum VB.NET
    Réponses: 0
    Dernier message: 03/08/2008, 11h13
  5. Access 2007 & Visual Basic Express 2008
    Par Pithonnette dans le forum VB.NET
    Réponses: 3
    Dernier message: 22/07/2008, 14h18

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