none
Imprimer un fichier pdf

    Question

  • Bonjour, j'aimerai savoir quel était le code pour imprimer un fichier pdf sur une imprimante donnée, sachant que l'imprimante sera dans une variable de type string.

    Cordialement, maxkun

    Cordialement, maxkun ;)

    Wednesday, February 08, 2012 10:58 AM

Answers

  • Bonjour,

    Ici on lance l'exécutable qui correspond au reader en lui passant des arguments sur la ligne de commande. De mémoire le /t permet de demander une impression...

    Si on essaie déjà directement en ligne de commande est-ce que cela marche ? Donc dans une invite de commande essayez qq chose comme :

    c:\Program files\Adobe\Acrord32.Exe /t "c:\Mon dossier\Mon fichier.pdf" "Mon imprimante à moi"

    en adaptant bien sûr les noms à votre cas. Si c'est ok, il faudra juste reproduire cette ligne de commande avec Process.Start...

    L'autre solution proposée par Ehjoe était je crois le PrintTo ? (au lieu de Print) ? C'est la solution que vous aviez essayé et qui ne produit pas de résultat ?


    Please always mark whatever response solved your issue so that the thread is properly marked as "Answered".


    Thursday, February 09, 2012 2:32 PM
  • Le chemin du fichier PDF est-il correct ?

    Avec Windows 7, et un document Test.pdf sur mon bureau la ligne suivante - donc je tape ce qui suit le "prompt" >

    c:\Program Files\Adobe\Reader 9.0\Reader>acrord32 /t "%userprofile%\Desktop\Test
    .pdf" "Microsoft XPS Document Writer"

    semble lancer l'impression sur cette imprimante car cela me demande le nom du fichier. Par contre après le fichier se ferme mais Adobe Reader reste ouvert !!!?

    Cela me fait penser d'ailleurs seulement maintenant que j'avais essayé qq chose de semblable il y a qq années et qu'après pas mal de déboires je m'étais replié sur un freeware "pdfp.exe" : http://www.softpedia.com/get/Office-tools/PDF/PDFp.shtml (qui s'appuie peut-être sur le reader mais automatise correctement les choses alors que le reader réagit effectivement un peu bizarrement par défaut, pourquoi ne pas se fermer ?).


    Please always mark whatever response solved your issue so that the thread is properly marked as "Answered".

    • Proposed as answer by Ciprian Duduiala Friday, February 10, 2012 7:58 AM
    • Marked as answer by maxkun Thursday, February 16, 2012 10:59 AM
    Thursday, February 09, 2012 6:12 PM

All replies

  • Bonjour,

    Cela dépend du "moteur" d'impression que vous utilisez... Est-ce crystal report ? Report viewer de Microsoft ? la classe PrintDocument ?

    Cordialement


    Gilles TOURREAU - MVP C#
    Architecte .NET/Consultant/Formateur chez Winwise
    Blog : http://gilles.tourreau.fr
    - MCPD : Enterprise Developper / Windows Developper 3.5 / ASP .NET 3.5
    - MCITP : SQL Server 2008 Developper
    - MCTS : ADO .NET 3.5 / SQL Server 2008 Developper / Windows Forms 3.5 / ASP .NET 3.5

    Wednesday, February 08, 2012 12:05 PM
  • Euh...

    Je ne me suis jamais posé la question, comment fait-on pour savoir quel est le moteur d'impression?


    Cordialement, maxkun ;)

    Wednesday, February 08, 2012 1:04 PM
  • Bonjour,

    Le thread suivant devrait vous aider à trouver une solution à votre question :

    http://social.msdn.microsoft.com/Forums/fr-FR/vbasicfr/thread/3e6ad01f-faaf-4ac1-9ebb-548c638eed8f

    Cordialement.


    Wednesday, February 08, 2012 10:08 PM
  • Ce sujet a été ouvert par moi et je l'ai relancé il y a peu de temps, mais étant marqué résolu j'ai préféré en réouvrir un pour être sûr qu'il soit lu. Mon problème est expliqué en bas de mon ancien sujet, j'ai 2 fonctions possible pour imprimer  :  l'une n'imprime que les fichiers images (donc les pdf ne passe pas) et l'autre imprime les pdf cependant elle les imprime seulement sur limprimante par défaut bien que je passe en paramètre une imprimante différente.

    J'ai essayé de regarder sur internet pour différente méthode, je suis tombé sur 3 fonctions : PageSetupDialog, PrintDocument et  PrintDialog. Cependant je n'ai pas réussi à les exploiter.


    Cordialement, maxkun ;)

    Thursday, February 09, 2012 7:30 AM
  • J'ai trouvé ce code sur un site mais il y a une ligne que je ne comprends pas :

    Dim pathToExecutable As String = "AcroRd32.exe"    
        Dim sReport = "C:Test.PDF" 'Complete name/path of PDF file    
        Dim SPrinter = "HP Officejet 5600 seriese" 'Name Of printer    
        Dim starter As New ProcessStartInfo(pathToExecutable, "/t " + sReport + " " + sPrinter + "")    
        Dim Process As New Process()    
        Process.StartInfo = starter Process.Start()
        'try and close the process with 20 seconds delay
        System.Threading.Thread.Sleep(30000)    
        Process.CloseMainWindow()
        Dim iLoop As Int16 = 0
        'check the process has exited or not
        If Process.HasExited = False Then    
        'if not then loop for 100 time to try and close the process'with 10 seconds delay
        While Not Process.HasExited
        System.Threading.Thread.Sleep(10000)
        Process.CloseMainWindow()
        iLoop = CShort(iLoop + 1)    
        If iLoop >= 100 Then    
        Exit While
        End If
        End While
        End If    
        Process.Close()
        Process.Dispose()
        Process = Nothing
        starter = Nothing
    

    La ligne que je ne comprends pas est  :

    Process.StartInfo = starter Process.Start()
    Pourquoi l'auteur a t-il mit l'objet suivi de Process.Start()??

    Je pense qu'il y a une faute de syntaxe mais je ne vois pas quelle est la bonne syntaxe.
    Si vous avez des idées je vous écoute :)



    Cordialement, maxkun ;)

    Thursday, February 09, 2012 1:19 PM
  • Bonjour,

    Il faut supliter cette ligne en deux, il s'agit de deux instructions :

    Process.StartInfo = starter 
    Process.Start()

    Cordialement.

    Thursday, February 09, 2012 2:00 PM
  • Cela compile bien mais aucune impression ne se lance.

    Et sinon à quoi correspond le "/t" dans cette ligne :

    Dim starter As New ProcessStartInfo(pathToExecutable, "/t " + sReport + " " + sPrinter + "") 
    Cordialement, maxkun ;)


    • Edited by maxkun Thursday, February 09, 2012 2:17 PM
    Thursday, February 09, 2012 2:11 PM
  • Bonjour,

    Ici on lance l'exécutable qui correspond au reader en lui passant des arguments sur la ligne de commande. De mémoire le /t permet de demander une impression...

    Si on essaie déjà directement en ligne de commande est-ce que cela marche ? Donc dans une invite de commande essayez qq chose comme :

    c:\Program files\Adobe\Acrord32.Exe /t "c:\Mon dossier\Mon fichier.pdf" "Mon imprimante à moi"

    en adaptant bien sûr les noms à votre cas. Si c'est ok, il faudra juste reproduire cette ligne de commande avec Process.Start...

    L'autre solution proposée par Ehjoe était je crois le PrintTo ? (au lieu de Print) ? C'est la solution que vous aviez essayé et qui ne produit pas de résultat ?


    Please always mark whatever response solved your issue so that the thread is properly marked as "Answered".


    Thursday, February 09, 2012 2:32 PM
  • Alors j'ai essayé directement en ligne de commande et cela ne produit rien, abode reader s'ouvre bien mais aucun document est affiché, j'ai juste adobe reader d'ouvert.

    En ce qui concerne le code de EhJoe qui est :

    Option Explicit On
    Imports System.Data.OleDb
    Module Module1
      Sub Main()
        Dim Prt_Proc As New Process ' imprime selon l'extension
        Try
          Dim Printer_Name As String = ""
          Dim pathFile As String = "C:\Users\joe\Documents\test.txt"
          Prt_Proc.StartInfo.FileName = pathFile
          '
          ' Selon type de fichier (print OU printTo)
          'Prt_Proc.StartInfo.Verb = "PrintTo"
          Prt_Proc.StartInfo.Verb = "Print"
          '
          Prt_Proc.StartInfo.CreateNoWindow = True
          Prt_Proc.StartInfo.Arguments = """" & Printer_Name & """"
          Prt_Proc.StartInfo.UseShellExecute = True
          Prt_Proc.Start()
          Prt_Proc.WaitForExit()
          Prt_Proc.Dispose()
        Catch ex As Exception
          Prt_Proc.Dispose()
          MsgBox(Err.Number & "  " & Err.Description)
        End Try
      End Sub
    End Module

    Le code fonctionne bien a condition de mettre Print et non PrintTo, c'est à dire que l'impression du pdf est bien lancé, cependant avec cette méthode, l'impression se lance toujours sur l'imprimante par défaut, bien que je lui précise une autre imprimante à la ligne :

    Prt_Proc.StartInfo.Arguments = """" & Printer_Name & """"
    C'est la que je bloque, comment faire pour lui dire d'imprimer sur une autre imprimante que celle par défaut???




    Cordialement, maxkun ;)

    Thursday, February 09, 2012 3:13 PM
  • Le chemin du fichier PDF est-il correct ?

    Avec Windows 7, et un document Test.pdf sur mon bureau la ligne suivante - donc je tape ce qui suit le "prompt" >

    c:\Program Files\Adobe\Reader 9.0\Reader>acrord32 /t "%userprofile%\Desktop\Test
    .pdf" "Microsoft XPS Document Writer"

    semble lancer l'impression sur cette imprimante car cela me demande le nom du fichier. Par contre après le fichier se ferme mais Adobe Reader reste ouvert !!!?

    Cela me fait penser d'ailleurs seulement maintenant que j'avais essayé qq chose de semblable il y a qq années et qu'après pas mal de déboires je m'étais replié sur un freeware "pdfp.exe" : http://www.softpedia.com/get/Office-tools/PDF/PDFp.shtml (qui s'appuie peut-être sur le reader mais automatise correctement les choses alors que le reader réagit effectivement un peu bizarrement par défaut, pourquoi ne pas se fermer ?).


    Please always mark whatever response solved your issue so that the thread is properly marked as "Answered".

    • Proposed as answer by Ciprian Duduiala Friday, February 10, 2012 7:58 AM
    • Marked as answer by maxkun Thursday, February 16, 2012 10:59 AM
    Thursday, February 09, 2012 6:12 PM
  • Alors j'ai refait un test, je vois bien le document dans la file d'attente des impressions mais dans la colonne état on voit mise en file d'attente et juste après il n'y a plus rien d'écrit, donc je ne sais pas trop ce qu'en fais l'ordinateur.

    J'ai télécharger PDFp mais comment cela fonctionne?

    Il faut faire la même ligne de commande en précisnat PDFp.exe a la place de acrord32.exe?


    Cordialement, maxkun ;)

    Friday, February 10, 2012 8:24 AM