Imprimer un fichier pdf

Résolu
maxkun Messages postés 52 Date d'inscription mercredi 2 décembre 2009 Statut Membre Dernière intervention 2 novembre 2020 - 8 févr. 2012 à 10:26
maxkun Messages postés 52 Date d'inscription mercredi 2 décembre 2009 Statut Membre Dernière intervention 2 novembre 2020 - 10 févr. 2012 à 16:12
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

4 réponses

maxkun Messages postés 52 Date d'inscription mercredi 2 décembre 2009 Statut Membre Dernière intervention 2 novembre 2020 1
10 févr. 2012 à 16:12
Après quelques recherches, j'ai trouvé la bonne syntaxe, donc ça :

Process.StartInfo = starter Process.Start()


devient :

Process.StartInfo = starter 
Process.Start()


C'est tout simple en fait
3
maxkun Messages postés 52 Date d'inscription mercredi 2 décembre 2009 Statut Membre Dernière intervention 2 novembre 2020 1
9 févr. 2012 à 14:16
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 :)
1
guilleto Messages postés 256 Date d'inscription jeudi 23 octobre 2003 Statut Membre Dernière intervention 20 mars 2013 1
8 févr. 2012 à 12:25
Bonjour,

Peux-tu indiquer sous quel environnement VB tu travailles (VB6, 2005, 2008 ou 2010) ?

Toutefois, voici un axe de recherche :
Essaie de faire un For Each sur tous les objets de type Printer afin de parcourir toutes les imprimantes.
Effectues un test entre ton nom d'imprimante au format string et l'élément Name de l'objet.

Je n'ai pas d'exemple de code pour le moment, fais un bout de code et mets le en réponse afin d'aider une autre personne qui chercherai la même chose.

Olivier
0
maxkun Messages postés 52 Date d'inscription mercredi 2 décembre 2009 Statut Membre Dernière intervention 2 novembre 2020 1
8 févr. 2012 à 12:35
Je travaille sous Visual Basic 2010.
Concernant les imprimantes, j'ai un petit code qui permet de toutes les lister, donc récupérer leurs nom n'est pas un problème :

Dim printers As System.Drawing.Printing.PrinterSettings.StringCollection
        printers = System.Drawing.Printing.PrinterSettings.InstalledPrinters()
        For x As Integer = 0 To printers.Count - 1
            liste_imprimante.Items.Add(printers(x))
        Next


J'avais dèjà un code pour des impressions, le souci c'est que mon premier code n'imprime pas les PDF, et le deuxième imprime seulement sur l'imprimante par défaut bien que je lui passe une autre imprimante en paramètre, voici le second code :

Sub impression(ByVal pathFile As String)
        Dim Prt_Proc As New Process ' imprime selon l'extension
        Try
            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 = "nom_imprimante"
            Prt_Proc.StartInfo.UseShellExecute = True
            Prt_Proc.Start()
            Prt_Proc.WaitForExit()
            Prt_Proc.Dispose()
        Catch ex As Exception
            Prt_Proc.Dispose()
        End Try
0
Rejoignez-nous