Pour imprimer les fichier pdf j'utilise le code suivant sur lequel je fais une boucle :
Dim proc As New Process()
With proc.StartInfo
.FileName = "c:\fichier1.pdf"
.UseShellExecute = True
.CreateNoWindow = True
.Verb = "print"
End With
proc.Start()
System.Threading.Thread.Sleep(1000)
Public Class Form1 Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load 'thread pour éviter le freeze de ton application Dim Thread1 As New Threading.Thread(AddressOf Impression) 'démarrage du thread Thread1.Start() End Sub Private Sub Impression() 'collecte de tous les pdf dans un dossier (éviter les chemins en dur comme c:\) Dim Fichiers() As IO.FileInfo = New IO.DirectoryInfo("c:").GetFiles("*.pdf") 'boucle sur chaque fichier For Each fichier As IO.FileInfo In Fichiers 'nouveau process Dim proc As New Process() With proc.StartInfo .FileName = fichier.FullName .UseShellExecute = True .CreateNoWindow = True .Verb = "print" End With 'lancement de l'impression proc.Start() 'boucle d'attente de fin de process Do 'avec une pause de 5 secondes pour soulager l'uc Threading.Thread.Sleep(5000) 'bouclage tant que le process n'a pas terminé l'impression Loop Until proc.HasExited Next End Sub End Class
'collecte de tous les pdf d'un dossier (éviter les chemins en dur comme c:\) et tri selon date de création Dim Fichiers As IEnumerable(Of IO.FileSystemInfo) = (From fichier As IO.FileSystemInfo _ In New IO.DirectoryInfo("c:").GetFiles("*.pdf") _ Order By fichier.CreationTime _ Descending) 'boucle sur chaque fichier For Each fichier As IO.FileSystemInfo In Fichiers 'reste du code inchangé .......
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre questionL'ordre est défini dans un tableau excel dont je récupère le nom des fichiers.Je ne suis pas madame soleil et ne peux donc pas deviner le format d'écriture des noms de tes fichiers pour le tri. Un peu plus de précisions merci.
Le process attend que je ferme acrobat manuellement pour imprimer le suivantJe n'ai pas d'imprimante sur mon poste et ne peux pas tester de code mais ça ne te coûte rien d'essayer ce qui suit.
'recherche de l'imprimante par défaut Dim Printer As String = New System.Drawing.Printing.PrinterSettings().PrinterName 'file d'attente de l'imprimante Dim PrintQueue As New PrintQueue(New PrintServer, Printer)
'bouclage tant que le dispositif d'impression est occupé Loop Until Not PrintQueue.IsProcessing 'destruction du processus proc.Kill()