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 ?
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
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.
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." <no@spam.fr> a écrit dans le message de news:
uKYvFUtpEHA.324@TK2MSFTNGP11.phx.gbl...
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 ?
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.
Stéphane L.
Trouvé également cette propriété : Me.PrintDialog1.Document.DefaultPageSettings.PrinterSettings.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.
Trouvé également cette propriété :
Me.PrintDialog1.Document.DefaultPageSettings.PrinterSettings.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." <no@spam.fr> a écrit dans le message de news:
uKYvFUtpEHA.324@TK2MSFTNGP11.phx.gbl...
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 ?
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.
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.
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." <no@spam.fr> a écrit dans le message de news:
uKYvFUtpEHA.324@TK2MSFTNGP11.phx.gbl...
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 ?
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.
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.
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." <no@spam.fr> a écrit dans le message de news:
OJTHddupEHA.2764@TK2MSFTNGP11.phx.gbl...
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." <no@spam.fr> a écrit dans le message de news:
uKYvFUtpEHA.324@TK2MSFTNGP11.phx.gbl...
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 ?
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 ?