Imprimer plusieurs centaines d etiquette sans boite de dialogue
cs_bfb
Messages postés22Date d'inscriptionsamedi 26 juillet 2003StatutMembreDernière intervention22 mai 2021
-
Modifié le 26 janv. 2020 à 18:31
cs_bfb
Messages postés22Date d'inscriptionsamedi 26 juillet 2003StatutMembreDernière intervention22 mai 2021
-
27 janv. 2020 à 20:52
Bonjour,
Je cherche à accélérer l'impression de plusieurs centaines d'étiquette sur une imprimante zebra. Toutes les façons que j'ai essayer fonctionnent mais beaucoup, beaucoup, beaucoup trop lente. Je désespère. Voici ce que j'ai codé pouvez vous l'accélérer par une autre méthode avec un max d'explication (je suis débutant et très mauvais).
D'avance merci.
Public Class Form1
Dim PageNumber As Integer
Private Sub Imprime_GotFocus(ByVal sender As Object, ByVal e As System.EventArgs) Handles Imprime.GotFocus
If PageNumber = "0" And Tetiquettes.Text <> "" Then
PageNumber = Tetiquettes.Text
End If
End Sub
Private Sub PrintDocument1_PrintPage(ByVal sender As System.Object, ByVal e As System.Drawing.Printing.PrintPageEventArgs) Handles PrintDocument1.PrintPage
If PageNumber > 0 Then
e.Graphics.DrawString("ART: " & REF.Text, New Font("Impact", 16, FontStyle.Bold), Brushes.Black, 30, 20) '1er nb marge gauche 2e marge haute
e.Graphics.DrawString("Désignation", New Font("Arial", 8, FontStyle.Regular), Brushes.Black, 42, 80) ' Désignation:
e.Graphics.DrawString(DESIGNATION.Text, New Font("Arial", 12, FontStyle.Bold), Brushes.Black, 40, 100) '
e.Graphics.DrawString("QTE :" & TQte.Text, New Font("Arial", 16, FontStyle.Bold), Brushes.Black, 30, 138) '
e.Graphics.DrawString(REPACK.Text, New Font("Bahnschrift Condensed", 12, FontStyle.Bold), Brushes.Black, 30, 165 & PageNumber) 'ici on indique le nombre d'impression restante
PageNumber -= 1 'on retire une impression
e.HasMorePages = True 'indique qu'il reste des impression à faire
End If
If PageNumber = 0 Then e.HasMorePages = False 'nombre d'impression = 0 on arrete
end sub
Encore merci d'avance et excusez moi si ce post n'est pas réglementaire mais je fais au mieux de mes capacité (très petite comparer a ce que je peux voir sur le site)
Public Class Form1
Private PageNumber as Integer
Private NbEtiquettes , ReferenceArt , DesignationArt, QuantiteArt, PackArt as String
Private Sub Imprime_GotFocus(ByVal sender As Object, ByVal e As System.EventArgs) Handles Imprime.GotFocus
' on mets les paramètres entrés au clavier dans des variables
NbEtiquettes = Tetiquettes.Text
ReferenceArt = REF.Text
DesignationArt = DESIGNATION.Text
QuantiteArt = TQte.Text
PackArt = REPACK.Text
If PageNumber = 0 And NbEtiquettes <> String.Empty Then
PageNumber = Convert.ToInt32(NbEtiquettes.)
End If
End Sub
Private Sub PrintDocument1_PrintPage(ByVal sender As System.Object, ByVal e As System.Drawing.Printing.PrintPageEventArgs) Handles PrintDocument1.PrintPage
If PageNumber > 0 Then
e.Graphics.DrawString("ART: " & Reference, New Font("Impact", 16, FontStyle.Bold), Brushes.Black, 30, 20) '1er nb marge gauche 2e marge haute
e.Graphics.DrawString("Désignation", New Font("Arial", 8, FontStyle.Regular), Brushes.Black, 42, 80) ' Désignation:
e.Graphics.DrawString(DesignationArt, New Font("Arial", 12, FontStyle.Bold), Brushes.Black, 40, 100) '
e.Graphics.DrawString("QTE :" & QuantiteArt, New Font("Arial", 16, FontStyle.Bold), Brushes.Black, 30, 138) '
e.Graphics.DrawString(PackArt, New Font("Bahnschrift Condensed", 12, FontStyle.Bold), Brushes.Black, 30, 165 & PageNumber) 'ici on indique le nombre d'impression restante
PageNumber -= 1 'on retire une impression
e.HasMorePages = (PageNumber > 0)
End If
End Sub
cs_bfb
Messages postés22Date d'inscriptionsamedi 26 juillet 2003StatutMembreDernière intervention22 mai 2021 26 janv. 2020 à 15:20
Je test tout ça en essayant de bien comprendre tout ce que tu as fait mais encore un ENORME merci pour ton aide je suis autodidacte et je ne me sert que de web pour avancer et c'est dur.
Encore un grand merci
vb95
Messages postés3418Date d'inscriptionsamedi 11 janvier 2014StatutContributeurDernière intervention31 mai 2023165
>
cs_bfb
Messages postés22Date d'inscriptionsamedi 26 juillet 2003StatutMembreDernière intervention22 mai 2021 Modifié le 26 janv. 2020 à 15:27
cs_bfb
Messages postés22Date d'inscriptionsamedi 26 juillet 2003StatutMembreDernière intervention22 mai 2021
>
vb95
Messages postés3418Date d'inscriptionsamedi 11 janvier 2014StatutContributeurDernière intervention31 mai 2023 26 janv. 2020 à 15:58
merci effectivement vb m'a demander de corriger.
Je sais que vous avez fait un super travail mais en vitesse de mise dans le spooler de l'imprimante on ne peut pas accélérer le processus? ce que je fait c'est pour mon boulot et ce qui existe et encore nettement plus rapide mais c'est un system type "dos ecran noir avec touche F quelque chose" pour imprimer c'est un logiciel interne à l'entreprise.
Et encore MERCI pour l'aide apportée
vb95
Messages postés3418Date d'inscriptionsamedi 11 janvier 2014StatutContributeurDernière intervention31 mai 2023165
>
cs_bfb
Messages postés22Date d'inscriptionsamedi 26 juillet 2003StatutMembreDernière intervention22 mai 2021 Modifié le 26 janv. 2020 à 16:10
A chaque fois que tu imprimes une étiquette il faut envoyer les paramètres de ce qu'il faut imprimer à l'imprimante .
Ces paramètres étant dans des TextBox j'ai mis ces paramètres dans des variables ce qui évite d'aller à chaque fois chercher le paramètre dans la Textbox .
Maintenant si tu imprimes 100 fois la même étiquette il est possible que la Zébra elle-même puisse enregistrer les différents paramètres et imprime les 100 étiquettes directement sans retourner dans VB à chaque fois pour savoir s'il y a encore des étiquettes à imprimer .
Mais sans connaître les spécificités techniques et logiques de la Zébra on ne sait pas faire .
C'est sûrement ce que fait le logiciel "Dos avec écran noir" comme tu dis et il n'y a guère plus rapide .
cs_bfb
Messages postés22Date d'inscriptionsamedi 26 juillet 2003StatutMembreDernière intervention22 mai 2021
>
vb95
Messages postés3418Date d'inscriptionsamedi 11 janvier 2014StatutContributeurDernière intervention31 mai 2023 27 janv. 2020 à 20:13
oui j'ai vu ce matin avec mon chef il m'a dit que maintenant c'est dans les paramètre de l'imprimante sous windows qu'il faut voir et pour leur logiciel (type dos) il possède son propre système de paramétrage.
JeuDuTaquin
Messages postés251Date d'inscriptionmardi 4 juillet 2017StatutMembreDernière intervention31 mai 20237 Modifié le 26 janv. 2020 à 19:24
Salut cs_bfb,
"Je cherche à accélérer l'impression" Comme Vb95 l'a souligné, tu ne précises pas si les étiquettes sont identiques…
Mais, en règle générale, moins tu imprimes d'objets, plus l'impression de l'étiquette sera rapide.
Tu as trois possibilités:
- Imprimer un masque de l'étiquette sur toutes les étiquettes vierges, que tu imprimera la nuit, ou le weekend. Le rouleau imprimé sera enroulé, puis tu demandera à ton logiciel de remplir les trous, après un calage précis de la première etiquette.
- Tu imprimes le masque (image bitmap), l'imprimante remonte, puis tu lances l'impression de l'étiquette personnalisée (codes barres, article, adresse…) à la demande ou à la suite. Cela évite le traitement de plusieurs objets sur l'espace à imprimer, la mise en forme et la réduction de tes objets graphiques/textes…
Donc, impression du masque (logo entreprise, labels…) puis surimpression sur le masque.
Le masque peut s'imprimer juste après l'impression d'une étiquette personnalisée, et attendre la validation manuelle d'une nouvelle étiquette…
Tout dépend du mode d'impression, au coup-à-coup ou à la volée.
Regarde si tu peux faire une impression en deux fois, avec les codes imprimante pour le retour vers le haut ( plusieurs back-lines pour recaller l'imprimante), tu auras un gain de traitement machine à chaque reconstruction de l'espace d'impression.
Pour la préimpression (le rouleau complet), cela suppose que l'étiquette est de taille identique, et que le masque est imprimé sans massicotage automatique après impression… Pour l'impression personnalisée, cette option devra être réactivée.
- La dernière possibilité et de créer directement une image graphique en bitmap, et de ne pas envoyer l'élément graphiques et texte qui seront retravaillés par le gestionnaire d'objet de l'imprimante !
Il gère ces objets les un après les autres, et reconstitue l'image, comme une photo, de tes différents objets.
Regarde aussi si ton imprimante gère l'impression dite 'brouillon' qui prennent moins de place en mémoire et de place sur le disque dur.
Mais, si tu veux vraiment imprimer rapidement, ouvre la documentation de l'imprimante, et envoie directement la chaîne de caractère bitmap ou texte, sans passer par le gestionnaire d'impression de Windows. De la sorte, le système ne gère plus rien, et à l'aide des caractères graphiques ou semi-graphiques, ou même en bitmap noir et blanc on ordonne à l'imprimante une impression à la demande.
Tout dépend du buffer et de la rapidité de celle-ci, mais plus de latences système…
cs_bfb
Messages postés22Date d'inscriptionsamedi 26 juillet 2003StatutMembreDernière intervention22 mai 2021 27 janv. 2020 à 20:52
Mon chef m'a dit que c'est sur le paramétrage de l'imprimante qu'il faut travaillé. On doit voir ca demain si toutefois on a un peut de temps. Mais le code que m'a donné VB95 m'a vraiment bien aidé j'attend que mon chef fasse le paramétrage idéal. C'est lui qui a les accès moi je ne suis qu'un intérim encore pour quelques jours .
En tout les cas merci pour toutes vos aides. J'ai bien avancé grâce à vous.
26 janv. 2020 à 15:20
Encore un grand merci
Modifié le 26 janv. 2020 à 15:27
Moi aussi je suis autodidacte et je fais ça par passion depuis plus de 20 ans
Ps : le point est à supprimer sur cette ligne
devient
Désolé
26 janv. 2020 à 15:58
Je sais que vous avez fait un super travail mais en vitesse de mise dans le spooler de l'imprimante on ne peut pas accélérer le processus? ce que je fait c'est pour mon boulot et ce qui existe et encore nettement plus rapide mais c'est un system type "dos ecran noir avec touche F quelque chose" pour imprimer c'est un logiciel interne à l'entreprise.
Et encore MERCI pour l'aide apportée
Modifié le 26 janv. 2020 à 16:10
Ces paramètres étant dans des TextBox j'ai mis ces paramètres dans des variables ce qui évite d'aller à chaque fois chercher le paramètre dans la Textbox .
Maintenant si tu imprimes 100 fois la même étiquette il est possible que la Zébra elle-même puisse enregistrer les différents paramètres et imprime les 100 étiquettes directement sans retourner dans VB à chaque fois pour savoir s'il y a encore des étiquettes à imprimer .
Mais sans connaître les spécificités techniques et logiques de la Zébra on ne sait pas faire .
C'est sûrement ce que fait le logiciel "Dos avec écran noir" comme tu dis et il n'y a guère plus rapide .
27 janv. 2020 à 20:13
Encore merci