pb impression en VB 6.0 - Programmation
Marsh Posté le 20-08-2001 à 15:20:47
La taille du papier se fait au niveau du pilote d'imprimante.
Quand on imprime avec une application non sophistiquée, elle utilise l'imprimante par défaut dans le format papier par défaut.
Faudrait règler la taille du papier au niveau Démarrer/Paramètres/Imprimantes/ icône de l'imprimante par défaut/click droit/propriétés (ou dans la configuration imprimante sous Word (par ex)/.../).
Si le papier fait 23cm de haut, et que l'imprimante l'accepte, le NewPage devrait obéir aux règlages (a priori ??). Sinon, big pb.
Si ça marche sous Word (par ex), sous VB cela devrait pouvoir se faire . Sinon, ne pas attendre de miracle.
Marsh Posté le 20-08-2001 à 15:38:00
le pb c'est que l'utilisateur doit à chque fois le faire mais le principe c'est que l'utilisateur ne touche pas au parametre de l'imprimante il doit bien avoir moyen via le papersize ou qlque chose comme ca mais je n'ai aucune doc la dessus et j'en vois pas vraiment sur le net.
Marsh Posté le 20-08-2001 à 16:19:59
Faudrait donc paramétrer le pilote par soft pour cette appli puis rétablir les valeurs par défaut ensuite.
Sinon, si c'est modifié "à la main", ça marche ?
voir ?
http://www.planet-source-code.com/
http://www.vbfrance.com/
http://www.google.fr/
Sous VB3, qq avait écrit une DLL (16 & 32 bits) pour accéder aux propriétés des imprimantes installées sur le PC. C'était assez "strong". Vu les progrès, c'est peut-être intégré au VB5/6.
Dans le fichier d'aide, il y a rien?
Chez Microsoft, peut-être sur la Knowledge Base ?
Marsh Posté le 23-08-2001 à 09:03:20
A l'occasion, faudra que je regarde la DLL sus-citée voir si on a accès à ce genre de paramètres (en lecture sans doute, en écriture avec application immédiate, sais pas).
En VB pur, pas certain possible.
Dans la KnowledgeBase Krosoft, y a rien ?
Marsh Posté le 23-08-2001 à 09:08:55
non rien du tout !
L'objet Printer ne nous permet pas de connaitre l'ensemble des possibilités d'une imprimante. Grâce à l'API, GetDeviceCaps, vous aller pouvoir tout connaitre.
Public Declare Function GetDeviceCaps Lib "gdi32" _
(ByVal hdc As Long, _
ByVal nIndex As Long _
) As Long
Le tableau ci-dessous vous permet de connaitre les constantes qu'il faut passer à cette API et la signification de la valeur retournée. Ce tableau est loin d'être complet (il y a 5 fois plus de constantes), mais cela vous montre un aperçu des possibilités.
CONSTANTE SIGNIFICATION DE LA VALEUR RETOURNEE
Public Const HORZSIZE = 4 La largeur en millimètre imprimable.
Public Const VERTSIZE = 6 La hauteur en millimètre imprimable.
Public Const PHYSICALWIDTH = 110 Largeur en dpi de l'impression (ex une page A4 à 600dpi retourne 600*21cm/2.54=4 961).
Public Const PHYSICALHEIGHT = 111 Largeur en dpi de l'impression (ex une page A4 à 600dpi retourne 600*29.7cm/2.54=7 016).
Public Const PHYSICALOFFSETX = 112 Distance entre le bord gauche de la page et la zone imprimable (ex s'il retourne 118 à 600dpi : 118*2.54/600=0.5cm).
Public Const PHYSICALOFFSETY = 113 Idem ci-dessus mais avec le bord haut.
Public Const CC_ROUNDRECT = 256 L'imprimante est-elle capable de dessiner des rectangles arrondis.
Public Const RC_BITMAP64 = 8 L'imprimante peut-elle imprimer des bitmaps de plus de 64Ko.
Public Const TC_CR_90 = &H8 L'imprimante peut-elle imprimer des textes avec une rotation de 90°
Public Const TC_CR_ANY = &H10 L'imprimante peut-elle imprimer des textes avec une rotation de quelconque.
Exemple d'utilisation : vous voulez connaitre la marge gauche minimale de votre imprimante (à 600 dpi) :
sngMargeGauche = GetDeviceCaps(Printer.hdc,PHYSICALOFFSETX)*2.54/600
le seul truc que j'ai trouvé mais je ne sais pas ce que ca vaut
Marsh Posté le 20-08-2001 à 15:11:54
je voudrais imprimer sur un listing de 23cm * 23 cm, je dois imprimer dans des cases précises sur le document, le pb est mon saut de page, il se fait au format A4, comment je peux définir à quelle entroit il doit faire son saut de page => définir la taille du papier
le NewPage me fait un saut de page A4 et non a ce format
Merci d'avance