OVH Cloud OVH Cloud

Marge de l'imprimante

4 réponses
Avatar
Stéphane L.
Bonjour,

J'imprime 1 état en VB .Net à l'aide du contrôle Me.PrintDialog1 et
Me.PrintDocument1

Avec les propriétés :
Me.PrintDialog1.Document.DefaultPageSettings.Bounds.Width

et
Me.PrintDialog1.Document.DefaultPageSettings.Bounds.Height

Je récupère bien la largeur et la hauteur de la page.
Si je sélectionne A4 en portrait, cela me retourne bien les valeurs 827 et
1169 qui correspondent bien à (827 * 0.254 = ) 21 cm * (1169 * 0.254 = )
29.7 cm.

Le problème que j'ai réside dans les marges de l'imprimante qui peuvent
varier selon l'imprimante sélectionnée.

Est-il possible de trouver en VB .Net les valeurs des 4 marges minimales
gauche, droite, haut et bas de l'imprimante sélectionnée ?

Merci d'avance pour votre aide,

--
Cordialement,

Stéphane L.

4 réponses

Avatar
Stéphane L.
J'ai oublié de préciser que j'ai bien trouvé la propriété :
PageSettings.Margins

mais ce n'est pas la propriété que je cherche.
Celle-ci à 1 valeur par défaut de 100 pour les 4 marges (soit 1 pouce=2.54
cm) alors que les marges minimales de l'imprimante sélectionnée sont en
générale inférieure.

Merci d'avance pour votre aide :),

Stéphane

"Stéphane L." a écrit dans le message de news:

Bonjour,

J'imprime 1 état en VB .Net à l'aide du contrôle Me.PrintDialog1 et
Me.PrintDocument1

Avec les propriétés :
Me.PrintDialog1.Document.DefaultPageSettings.Bounds.Width

et
Me.PrintDialog1.Document.DefaultPageSettings.Bounds.Height

Je récupère bien la largeur et la hauteur de la page.
Si je sélectionne A4 en portrait, cela me retourne bien les valeurs 827 et
1169 qui correspondent bien à (827 * 0.254 = ) 21 cm * (1169 * 0.254 = )
29.7 cm.

Le problème que j'ai réside dans les marges de l'imprimante qui peuvent
varier selon l'imprimante sélectionnée.

Est-il possible de trouver en VB .Net les valeurs des 4 marges minimales
gauche, droite, haut et bas de l'imprimante sélectionnée ?

Merci d'avance pour votre aide,

--
Cordialement,

Stéphane L.



Avatar
Stéphane L.
Trouvé également cette propriété :
Me.PrintDialog1.Document.DefaultPageSettings.PrinterSettings.DefaultPageSettings.Margins

Mais retourne les mêmes valeurs que

Me.PrintDialog1.Document.DefaultPageSettings.Margins

Ces 2 propriétés retourne les valeurs par défaut de 100 (1 pouce)

Hélàs, ce ne convient toujours pas...

Merci d'avance pour votre aide

Stéphane


"Stéphane L." a écrit dans le message de news:

Bonjour,

J'imprime 1 état en VB .Net à l'aide du contrôle Me.PrintDialog1 et
Me.PrintDocument1

Avec les propriétés :
Me.PrintDialog1.Document.DefaultPageSettings.Bounds.Width

et
Me.PrintDialog1.Document.DefaultPageSettings.Bounds.Height

Je récupère bien la largeur et la hauteur de la page.
Si je sélectionne A4 en portrait, cela me retourne bien les valeurs 827 et
1169 qui correspondent bien à (827 * 0.254 = ) 21 cm * (1169 * 0.254 = )
29.7 cm.

Le problème que j'ai réside dans les marges de l'imprimante qui peuvent
varier selon l'imprimante sélectionnée.

Est-il possible de trouver en VB .Net les valeurs des 4 marges minimales
gauche, droite, haut et bas de l'imprimante sélectionnée ?

Merci d'avance pour votre aide,

--
Cordialement,

Stéphane L.



Avatar
Stéphane L.
Pour donner 1 exemple précis de ce que je recherche,

Si l'on va par exemple dans Word, et que l'on va dans la Mise en Page,
Si je mets 0 aux marges gauche, droite, haut et bas, lors de la validation
Word me signale que les marges sont définies au-delà de la zone imprimable.
En corrigeant, la vraie valeur minimale d'impression de l'imprimante
sélectionnée apparaît.

Cette cette valeur que je cherche dans VB .Net

NB : j'ai pris l'exemple de Word, mais mon programme n'a rien à voir avec 1
programme externe.

Merci d'avance pour votre aide,
Stéphane

"Stéphane L." a écrit dans le message de news:

Bonjour,

J'imprime 1 état en VB .Net à l'aide du contrôle Me.PrintDialog1 et
Me.PrintDocument1

Avec les propriétés :
Me.PrintDialog1.Document.DefaultPageSettings.Bounds.Width

et
Me.PrintDialog1.Document.DefaultPageSettings.Bounds.Height

Je récupère bien la largeur et la hauteur de la page.
Si je sélectionne A4 en portrait, cela me retourne bien les valeurs 827 et
1169 qui correspondent bien à (827 * 0.254 = ) 21 cm * (1169 * 0.254 = )
29.7 cm.

Le problème que j'ai réside dans les marges de l'imprimante qui peuvent
varier selon l'imprimante sélectionnée.

Est-il possible de trouver en VB .Net les valeurs des 4 marges minimales
gauche, droite, haut et bas de l'imprimante sélectionnée ?

Merci d'avance pour votre aide,

--
Cordialement,

Stéphane L.



Avatar
Stéphane
Je poste la réponse à ma question au cas où cela puisse intéresser du monde
:).
Ce code n'est pas de moi, et je n'ai pas encore testé.

Cordialement,
Stéphane

---------------

' pour lancer cette sub utilisez le code suivant
' dans un bouton de commande

Private Sub Command1_Click()
Dim G As Single
Dim D As Single
Dim H As Single
Dim B As Single
Dim msg As String

pr_MargesImprimante G, D, H, B

msg = "Marge Gauche en mm = " & Format$(G) & vbCr
msg = msg & "Marge Droite en mm = " & Format$(D) & vbCr
msg = msg & "Marge du Haut en mm = " & Format$(H) & vbCr
msg = msg & "Marge du Bas en mm = " & Format$(B)
MsgBox msg
End Sub




' Placez le code suivant dans un module.
'
' Déclarations de l'API windows.
Public Type POINTAPI
x As Long
y As Long
End Type
Public Const GETPRINTINGOFFSET = 13
Public Const GETPHYSPAGESIZE = 12
Public Const HORZRES = 8
Public Const VERTRES = 10
Public Declare Function GetDeviceCaps Lib "gdi32" (ByVal hdc As Long, ByVal
nIndex As Long) As Long
Public Declare Function Escape Lib "gdi32" (ByVal hdc As Long, ByVal nEs As
Long, ByVal nCount As Long, ByVal lpInData As Any, lpOutData As Any) As Long

' pr_MargesImprimante
' -------------------
' Retourne les marges par défaut de l'imprimante en millimètre. Ces marges
' correspondent aux limites physiques de l'imprimante en cours.
'
========================================================================== ' Procédures et fonctions utilisées : Aucunes
'
' G = Marge gauche.
' D = Marge droite.
' H = Marge du haut.
' B = Marge du bas.
'
========================================================================== Sub pr_MargesImprimante(G As Single, D As Single, H As Single, B As Single)
'
Dim pt1 As POINTAPI
Dim pt2 As POINTAPI
Dim x As Long
Dim MargeGauche As Long
Dim MargeHaut As Long
Dim MargeDroite As Long
Dim MargeBas As Long
Dim LargeurAireImprimable As Long
Dim HauteurAireImprimable As Long
' Récupération de la marge de gauche et de la marge du haut
x = Escape(Printer.hdc, GETPRINTINGOFFSET, 0&, 0&, pt1)
MargeGauche = pt1.x
MargeHaut = pt1.y
' Récupération de l'aire imprimable.
x = Escape(Printer.hdc, GETPHYSPAGESIZE, 0&, 0&, pt2)
LargeurAireImprimable = GetDeviceCaps(Printer.hdc, HORZRES)
HauteurAireImprimable = GetDeviceCaps(Printer.hdc, VERTRES)
' Calcul de la marge de droite et de celle du bas.
MargeDroite = pt2.x - LargeurAireImprimable - MargeGauche
MargeBas = pt2.y - HauteurAireImprimable - MargeHaut
' Calcul des marges en mm.
G = (MargeGauche * Printer.TwipsPerPixelX) / 56.7
D = (MargeDroite * Printer.TwipsPerPixelX) / 56.7
H = (MargeHaut * Printer.TwipsPerPixelY) / 56.7
B = (MargeBas * Printer.TwipsPerPixelY) / 56.7
'
End Sub

"Stéphane L." a écrit dans le message de news:

Pour donner 1 exemple précis de ce que je recherche,

Si l'on va par exemple dans Word, et que l'on va dans la Mise en Page,
Si je mets 0 aux marges gauche, droite, haut et bas, lors de la validation
Word me signale que les marges sont définies au-delà de la zone
imprimable.
En corrigeant, la vraie valeur minimale d'impression de l'imprimante
sélectionnée apparaît.

Cette cette valeur que je cherche dans VB .Net

NB : j'ai pris l'exemple de Word, mais mon programme n'a rien à voir avec
1 programme externe.

Merci d'avance pour votre aide,
Stéphane

"Stéphane L." a écrit dans le message de news:

Bonjour,

J'imprime 1 état en VB .Net à l'aide du contrôle Me.PrintDialog1 et
Me.PrintDocument1

Avec les propriétés :
Me.PrintDialog1.Document.DefaultPageSettings.Bounds.Width

et
Me.PrintDialog1.Document.DefaultPageSettings.Bounds.Height

Je récupère bien la largeur et la hauteur de la page.
Si je sélectionne A4 en portrait, cela me retourne bien les valeurs 827
et 1169 qui correspondent bien à (827 * 0.254 = ) 21 cm * (1169 * 0.254
= ) 29.7 cm.

Le problème que j'ai réside dans les marges de l'imprimante qui peuvent
varier selon l'imprimante sélectionnée.

Est-il possible de trouver en VB .Net les valeurs des 4 marges minimales
gauche, droite, haut et bas de l'imprimante sélectionnée ?

Merci d'avance pour votre aide,

--
Cordialement,

Stéphane L.