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

Windows Discussion :

Imprimer un fichier pdf sans ouvrir acrobat


Sujet :

Windows

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    47
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 47
    Points : 17
    Points
    17
    Par défaut Imprimer un fichier pdf sans ouvrir acrobat
    Bonjour

    Voila je cherche en vain à pourvoir imprimer un fichier pdf sans avoir à ouvrir acrobat.

    Savez vous comment puis je faire?

    Merci par avance

  2. #2
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    47
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 47
    Points : 17
    Points
    17
    Par défaut
    up svp je crois que l'on peut le faire en java script mais pas compris :s

  3. #3
    Expert éminent sénior

    Homme Profil pro
    pdg
    Inscrit en
    Juin 2003
    Messages
    5 749
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : pdg

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 749
    Points : 10 666
    Points
    10 666
    Billets dans le blog
    3
    Par défaut
    Faut voir les paramètres d'Acrobat. Tu peux utiliser ShellExecute( "print" ) qui va lancer l'action "Imprimer" que Acrobat a associé aux fichier pdf. Dans la base de registre, on voit que ça lance acrobat avec les options /p /h.
    Si ça ne te convient pas, faut chercher d'autres options.
    http://www.experts-exchange.com/Web/..._20841450.html

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    47
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 47
    Points : 17
    Points
    17
    Par défaut
    Merci pour ton aide.

    Donc j'ai fait un script batch :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
     
    @echo off
    echo "%1"
    Title Impression du fichier Avis.pdf
    echo Impression en cours...
    cd "C:\Program Files\Adobe\Acrobat 7.0\Reader"
    start AcroRd32.exe /p /h "c:\%1"
    ping 127.0.0.1 -n 10 > nul
    cd "C:\"
    pskill.exe AcroRd32.exe
    echo Impression terminé
    Donc le pb c'est que j'utilise un programme externe pskill, c'est moyen, il y a pas une commande permettant de killer un proccesus? Je crois sous XP pro que oui mais pas sur? Et de plus j'utilise le ping pour attendre 10 s avant la fermeture d'acrobat, c'est un peu de la bidouille, pas très pro, vous avez pas une autre idée?

    Voila merci d'avance

  5. #5
    Expert éminent sénior

    Homme Profil pro
    pdg
    Inscrit en
    Juin 2003
    Messages
    5 749
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : pdg

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 749
    Points : 10 666
    Points
    10 666
    Billets dans le blog
    3
    Par défaut
    D'après le lien que je t'ai donné, la commande /t demande à Acrobat de se terminer une fois fini.
    start AcroRd32.exe /t "c:\%1"

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    47
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 47
    Points : 17
    Points
    17
    Par défaut
    ah ok je vais essaye mais bon peut être que j'ai trouvé la solution à mon pb par un script en vbs. Mais voila connais pa du tout ce langage :s

    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
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
     
     
    Dim pdfKey, printCmd, printToCmd, printJob
    Dim printerName, printerDriver, printerPort, regPath
    Dim fso, fileName, fullPath, readerActive
    Dim wmi, wmiq, colProcesses, colPrinters
    Dim printJobStarted, loopCounter
    Dim arDefaultPrinter
    Const TIMEOUT = 60
    '-- Initialize variables
    printJobStarted = False
    loopCounter = 0
    strComputer = "."
    readerActive = False
    '-- Initialize objects
    Set objShell = CreateObject("WScript.Shell")
    Set fso   = CreateObject("Scripting.FileSystemObject")
    Set wmi   = GetObject("winmgmts:")
    Set objWMIService = GetObject("winmgmts:" _
        & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
    Set objArgs = WScript.Arguments
    If objArgs.length = 0 Then
     WScript.echo("Usage: PrintPDF <PDF File Path> [""Printer Name""]")
     WScript.Quit(1)
    End If
    '-- Get PDF Filename from command line
    fileName = objArgs(0)
    '-- Get full path to PDF file
    fullPath = fso.GetAbsolutePathName(fileName)
    '-- Query for active acrobat reader processes
    wmiq = "select * from Win32_Process where name='AcroRd32.exe'"
    Set colProcesses = wmi.ExecQuery(wmiq)
    '-- Set flag if acrobat reader is running
    For Each process in colProcesses
     readerActive = True
    Next
    '-- Get the registry key of file association for ".pdf"
    pdfKey = objShell.RegRead("HKCR\.pdf\")
    '-- Get the print or printto command from the registry
    If objArgs.length = 1 Then
     '-- Get the default printer
     printerName=objShell.RegRead("HKCU\Software\Microsoft\Windows NT\CurrentVersion\Windows\Device")
     arDefaultPrinter=Split(printerName,",")
     If IsArray(arDefaultPrinter) Then
      printerName=arDefaultPrinter(0)
      printerPort=arDefaultPrinter(2)
     End If
    Else
     '-- Get the printer name arg from command line
     printerName = objArgs(1)
    End If
    '-- Get the printto command for .pdf files
    printCmd = objShell.RegRead("HKCR\" & pdfKey & "\shell\printto\command\")
    '-- Get the remaining args from the registry
    regPath = "HKLM\SYSTEM\CurrentControlSet\Control\Print\Printers\" & printerName
    printerDriver = objShell.RegRead(regPath & "\Printer Driver")
    printerPort = objShell.RegRead(regPath & "\Port")
    '-- Replace printjob argument with the PDF file path 
    printJob = Replace(printCmd, "%1", fullPath)
    '-- Second argument is printer name
    printJob = Replace(printJob, "%2", printerName)
    '-- Third argument is driver name
    printJob = Replace(printJob, "%3", printerDriver)
    '-- Fourth argument is port
    printJob = Replace(printJob, "%4", printerPort)
     
    '-- Print the PDF file
    objShell.Run(printJob)
    wmiq = "select * from Win32_Printer where Name ='" & printerName & "'"
    Do
     '-- Query status of the printer
     Set colPrinters = objWMIService.ExecQuery(wmiq)
     '-- Check printing status of the printer
     For Each objPrinter in colPrinters
      Select Case objPrinter.PrinterStatus
       Case 1  '-- Status Other
        If printJobStarted Then Exit Do
       Case 2  '-- Status Unknown
        If printJobStarted Then Exit Do
       Case 3  '-- Status Idle
        If printJobStarted Then Exit Do
       Case 4  '-- Status Printing
        printJobStarted = True
       Case 5  '-- Status Warming Up
      End Select
     Next
     '-- Wait 100 ms
     WScript.Sleep 100
     '-- Increment our loop counter
     loopCounter = loopCounter + 1
     '-- Timeout after TIMEOUT seconds
     If loopCounter > (TIMEOUT * 10) Then Exit Do
    Loop
    '-- If acrobat reader wasn't active before printing, kill it
    If readerActive = False Then
     '-- Query for active acrobat reader processes
     wmiq = "select * from Win32_Process where name='AcroRd32.exe'"
     Set colProcesses = wmi.ExecQuery(wmiq)
     '-- Terminate all acrobat reader processes
     For Each process in colProcesses
      process.Terminate(1)
     Next
    End If
    Donc je l'a copié sous c:\Windows\system32

    Quand je le lance, j'ai une erreur sur la ligne 63 qui est :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    '-- Get the printto command for .pdf files
    printCmd = objShell.RegRead("HKCR\" & pdfKey & "\shell\printto\command\")
    Mon erreur est :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Racine incorrecte dans la clé de Registre
    "HKCR\pdffile\shell\printto\command\"
    Là je sais pas si tu peux m'aider? il faut peut être que je poste dans une autre partie du forum? Je crois que c'est un pb avec la base des registre non?

  7. #7
    Expert éminent sénior

    Homme Profil pro
    pdg
    Inscrit en
    Juin 2003
    Messages
    5 749
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : pdg

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 749
    Points : 10 666
    Points
    10 666
    Billets dans le blog
    3
    Par défaut
    Ce script reproduit le comportement de ShellExecute( "printto" ). Sauf que ça ne le fait pas complètement, et pour cause c'est bcp de boulot.
    A savoir, chez moi, la clé "HKCR\.pdf" a pour valeur "AcroExch.Document" (et non "pdffile", mais ça dépend de Acrobat ça) et
    la clé "HKCR\AcroExch.Document" renvoie sur "HKCR\AcroExch.Document.7" qui elle contient bien "/shell/printto". Vu que ton script ne gère pas ce genre d'indirection, il suffit qu'il y ait la même chose chez toi pour que ça échoue.
    C'est ce qui arrive quand on se base sur des méthodes non documentées.
    Je t'encourage donc à utiliser ShellExecute( "printto" ), en lui donnant les paramètres attendus.
    '-- Replace printjob argument with the PDF file path
    printJob = Replace(printCmd, "%1", fullPath)
    '-- Second argument is printer name
    printJob = Replace(printJob, "%2", printerName)
    '-- Third argument is driver name
    printJob = Replace(printJob, "%3", printerDriver)
    '-- Fourth argument is port
    printJob = Replace(printJob, "%4", printerPort)
    ce qui revient à appeler acrobat ainsi:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "C:\Program Files\Adobe\Acrobat 7.0\Reader\AcroRd32.exe" /t "%1" "%2" "%3" "%4"

  8. #8
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    47
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 47
    Points : 17
    Points
    17
    Par défaut
    Euh oui lol j'ai pas tout compris

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
     
    Je t'encourage donc à utiliser ShellExecute( "printto" ), en lui donnant les paramètres attendus.
    Le paramètre que j'ai besoin est juste le nom du fichier c'est tout, l'imprimante est celle par défaut.

    Mais tu me dis que ca dépend de la version d'acrobat non?

    Je peux pas adpater ce script à la version 7, c'est la version qui sera utilisé?

    Merci beaucoup pour ton aide

    Edit1: Ah cool j'ai modifier & pdfKey & par AcroExch.Document.7 ca à l'air de marcher mais voila il me ferme pas acrobat pq :'( je tourne en rond snif

    Edit2: Ben j'ai testé sur un autre pc bon c'est le rgistre de l'imprimante qui marche pas cette fois ci pffff

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
     
    regPath = "HKLM\SYSTEM\CurrentControlSet\Control\Print\Printers\" & printerName
    printerDriver = objShell.RegRead(regPath & "\Printer Driver")
    Ahh si proche du but c'est bête

  9. #9
    Expert éminent sénior

    Homme Profil pro
    pdg
    Inscrit en
    Juin 2003
    Messages
    5 749
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : pdg

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 749
    Points : 10 666
    Points
    10 666
    Billets dans le blog
    3
    Par défaut
    Le paramètre que j'ai besoin est juste le nom du fichier c'est tout, l'imprimante est celle par défaut.
    je viens d'essayer avec /t fichier.pdf. Il m'ouvre aussi acrobat. Si ce dernier a été programmé pour toujours s'ouvrir, tu ne peux pas y faire grand chose...
    Avec autoit tu peux peut être l'automatiser pour qu'il se ferme.
    http://www.autoitscript.com/autoit3/

  10. #10
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    47
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 47
    Points : 17
    Points
    17
    Par défaut
    Arf ok ben merci quand même c'est sympa d'avoir passé du temps

    Bon ben je vais rester avec mon script batch alors

    C'est bete pour le vbs, il me plaisait bien

    @+

  11. #11
    Membre du Club
    Inscrit en
    Septembre 2006
    Messages
    107
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Septembre 2006
    Messages : 107
    Points : 48
    Points
    48
    Par défaut
    Je reprends la conversation car j'ai le même souci,

    Quand j'utilise l'option /t tout marche bien sauf que Reader ne se ferme pas aprés l'impression.

    J'ai vu qu'en utilisant une ancienne version d'adobe cela pourrait peut etre marchait ...
    Personne n'a une autre solution plus simple et plus pérènne pour imprimer un pdf par programmation ?

  12. #12
    Inactif
    Inscrit en
    Février 2008
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 3
    Points : 3
    Points
    3
    Par défaut
    Citation Envoyé par aurelien.tournier Voir le message
    Personne n'a une autre solution plus simple et plus pérènne pour imprimer un pdf par programmation ?
    Oui, avec COM, surtout pas ShellExecute évidemment

  13. #13
    Membre habitué
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    340
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 340
    Points : 177
    Points
    177
    Par défaut
    tu code toi-meme l'impression en utilisant la bibliotheque poppler
    L'Opus attire les Prélats

Discussions similaires

  1. [Débutant] Imprimer un PDF sans ouvrir un logiciel tiers
    Par Benxt dans le forum VB.NET
    Réponses: 9
    Dernier message: 28/02/2013, 13h44
  2. [WD-2010] imprimer plusieurs fichiers word sans ouvrir de fichiers
    Par crouic5 dans le forum Word
    Réponses: 0
    Dernier message: 15/10/2012, 11h47
  3. [XL-2007] Convertir en PDF sans ouvrir le fichier
    Par neiluj26 dans le forum Macros et VBA Excel
    Réponses: 12
    Dernier message: 08/10/2012, 18h59
  4. Imprimer un pdf sous access (vba) sans ouvrir acrobat reader
    Par benoit16 dans le forum VBA Access
    Réponses: 3
    Dernier message: 23/02/2010, 08h43
  5. VBA/Word/Excel97/Imprimer un pdf sans ouvrir acrobat
    Par ouskel'n'or dans le forum VBA Word
    Réponses: 2
    Dernier message: 28/09/2005, 21h40

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