Gestion du recto-verso lors de l'impression

Soulant Messages postés 28 Date d'inscription mercredi 23 novembre 2005 Statut Membre Dernière intervention 21 octobre 2008 - 29 juin 2007 à 10:22
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 - 2 juil. 2007 à 19:18
Bonjour,

J'essaie d'imprimer un tif multipage en recto-verso. Je charge donc mon image dans un composant ImgEdit et j'utilise sa méthode PrintImage() pour lancer l'impression.
Seulement comme je veux faire du recto-verso et que je ne vois rien à par un Printer pour gérer l'option Duplex, j'essaie de configurer cette option comme ceci Printer.Duplex=vbPRDPHorizontal, seulement là j'ai une erreur "Valeur incorrecte"... poutant elle vient de l'aide.

Si vous pouvez m'aider, merci.

14 réponses

Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 71
29 juin 2007 à 10:38
me semble correcte, ta valeur, encore faut il que ton imprimante le gère....

Renfield
Admin CodeS-SourceS- MVP Visual Basic
0
jmfmarques Messages postés 7668 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 28
29 juin 2007 à 10:39
Bonjour,

L'aide te précise également ceci :
"Note   The effect of the properties of the Printer object depends on the driver supplied by the printer manufacturer. Some property settings may have no effect, or several different property settings may all have the same effect. Settings outside the accepted range may produce an error. For more information, see the manufacturer's documentation for the specific driver."
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 71
29 juin 2007 à 10:44
Renfield





Admin CodeS-SourceS

- MVP Visual Basic
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 71
29 juin 2007 à 10:47
quoi ce bug ? je perd tous mes messages ........

pas le choix de faire un On Error, en ce cas...

testé au boulot, le code suivant

   Printer.Duplex = vbPRDPHorizontal
   Printer.Print "Page1.0"
   Printer.NewPage
   Printer.Print "Page2.0"
   Printer.EndDoc, ----
By Renfield

tourne nikel

Renfield
Admin CodeS-SourceS- MVP Visual Basic
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Soulant Messages postés 28 Date d'inscription mercredi 23 novembre 2005 Statut Membre Dernière intervention 21 octobre 2008
29 juin 2007 à 10:54
Merci, j'ai pu avancé et je n'ai plus ce problème là: en effet mon imprimante ne gérait pas le recto-verso donc j'ai changer d'imprimante et ça passe...

Mais mon deuxième souci, c'est d'imprimer un tif avec printer car sa méthode  PaintPicture n'accepte que du bmp...

Donc  pour résumer j'ai:
     1: je gère le duplex avec l'objet Printer
    2: je gère le tif avec ImgEdit

pas moyen de concilier les deux?

Merci encore.
0
jmfmarques Messages postés 7668 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 28
29 juin 2007 à 11:00
Non,

L'objet printer est l'objet printer et ses ajustements ne concernent que les impressions gérées par l'objet Printer lui-même.
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 71
29 juin 2007 à 11:09
je connais pas ImgEdit, mais je pense qu'il est possible d'aller dessiner sur le Printer (via son hDc ?)

Renfield
Admin CodeS-SourceS- MVP Visual Basic
0
Soulant Messages postés 28 Date d'inscription mercredi 23 novembre 2005 Statut Membre Dernière intervention 21 octobre 2008
29 juin 2007 à 11:25
ImgEdit ressemble à PictureBox pour ce qui est d'afficher une image seulement elle accepte plus de format tel que le tif...

Et je veux pas dessiner mais imprimer un fichier tout simplement donc j'utilise juste le Printer pour son duplex...

Donc comment imprimer un tif recto-verso avec du vb?

Merci.
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 71
29 juin 2007 à 11:29
"je veux pas dessiner mais imprimer"
si, tu souhaites dessinner ^^

faut que l'image soit transmise a l'objet Printer, ensuite, c'est bon...

"dessiner" parce que le printer, c'est manipulable grace a un Dc, comme toute zone de dessin.

ton probleme est autre que "comment imprimer un tif recto-verso avec du vb?"

ton probleme est : "comment blitter une image depuis un ImgEdit vers un Dc"
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 71
29 juin 2007 à 11:44
GetDc de ton ImgEdit1.hWnd (puis ReleaseDc)
te permettra de faire un BitBlt
0
Soulant Messages postés 28 Date d'inscription mercredi 23 novembre 2005 Statut Membre Dernière intervention 21 octobre 2008
2 juil. 2007 à 09:49
Bonjour,

Tu es allé un peu vite sur ta dernière explication... (pour moi)
Je ne maîtrise pas encore tout donc je ne comprends pas ton dernier raisonnement.

Les méthodes GetDc et ReleaseDc sont appliquées sur quel objet?
Et la dernière, le BitBlt... j'en fais quoi?

Merci encore.
0
Soulant Messages postés 28 Date d'inscription mercredi 23 novembre 2005 Statut Membre Dernière intervention 21 octobre 2008
2 juil. 2007 à 10:08
Encore moi,

donc j'ai trouver comment déclarer les GetDC et ReleaseDC mais lorsque j'imprime j'ai un petit rectangle gris et c'est tout...

Voici mon code:
lngDC = GetDC(Form1.ImgEdit1.hwnd)
BitBlt Form1.Picture1.hdc, 0, 0, ScaleWidth, ScaleHeight, lngDC, 0, 0, vbSrcCopy
ReleaseDC Scan_400.hwnd, lngDC
Form1.Picture1.Refresh
Printer.PaintPicture Form1.Picture1.Image, 0, 0

Printer.EndDoc

Merci.
0
Soulant Messages postés 28 Date d'inscription mercredi 23 novembre 2005 Statut Membre Dernière intervention 21 octobre 2008
2 juil. 2007 à 11:22
J'avance petit à petit:

With Form1.Picture1
      .ScaleWidth = Form1.ImgEdit1.ImageScaleWidth
      .ScaleHeight = Form1.ImgEdit1.ImageScaleHeight
End With

lngDC = GetDC(Form1.ImgEdit1.hwnd)
BitBlt Form1.Picture1.hdc, 0, 0, Form1.Picture1.ScaleWidth, Form1.Picture1.ScaleHeight, lngDC, 0, 0, vbSrcCopy

ReleaseDC Form1.ImgEdit1.hwnd, lngDC
Form1.Picture1.Refresh

Si j'ai bien compris à la fin de ce code, je dois retrouver mon image qui est dans le ImgEdit dans le PictureBox... ce qui n'est pas le cas, le picturebox reste gris.

Merci de votre aide.
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 71
2 juil. 2007 à 19:18
ne JAMAIS modifier les ScaleWidth / ScaleHeight
ca modifie l'echelle...

les mesures passées à BitBlt doivent etre en pixels

voir l'AutoRedraw de ton picturebox, pour le gris (et un picture1.Refresh ?)

Renfield
Admin CodeS-SourceS- MVP Visual Basic
0
Rejoignez-nous