Gestion du recto-verso lors de l'impression

Signaler
Messages postés
28
Date d'inscription
mercredi 23 novembre 2005
Statut
Membre
Dernière intervention
21 octobre 2008
-
Messages postés
17288
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
27 septembre 2021
-
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

Messages postés
17288
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
27 septembre 2021
71
me semble correcte, ta valeur, encore faut il que ton imprimante le gère....

Renfield
Admin CodeS-SourceS- MVP Visual Basic
Messages postés
7668
Date d'inscription
samedi 5 novembre 2005
Statut
Membre
Dernière intervention
22 août 2014
27
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."
Messages postés
17288
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
27 septembre 2021
71
Renfield





Admin CodeS-SourceS

- MVP Visual Basic
Messages postés
17288
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
27 septembre 2021
71
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
Messages postés
28
Date d'inscription
mercredi 23 novembre 2005
Statut
Membre
Dernière intervention
21 octobre 2008

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.
Messages postés
7668
Date d'inscription
samedi 5 novembre 2005
Statut
Membre
Dernière intervention
22 août 2014
27
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.
Messages postés
17288
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
27 septembre 2021
71
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
Messages postés
28
Date d'inscription
mercredi 23 novembre 2005
Statut
Membre
Dernière intervention
21 octobre 2008

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.
Messages postés
17288
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
27 septembre 2021
71
"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"
Messages postés
17288
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
27 septembre 2021
71
GetDc de ton ImgEdit1.hWnd (puis ReleaseDc)
te permettra de faire un BitBlt
Messages postés
28
Date d'inscription
mercredi 23 novembre 2005
Statut
Membre
Dernière intervention
21 octobre 2008

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.
Messages postés
28
Date d'inscription
mercredi 23 novembre 2005
Statut
Membre
Dernière intervention
21 octobre 2008

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.
Messages postés
28
Date d'inscription
mercredi 23 novembre 2005
Statut
Membre
Dernière intervention
21 octobre 2008

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.
Messages postés
17288
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
27 septembre 2021
71
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