DOCUMENTATION EN LIGNE
DE WINDEVWEBDEV ET WINDEV MOBILE

Aide / WLangage / Fonctions WLangage / Fonctions standard / Fonctions d'impression
  • Caractéristiques de l'impression
  • Combinaison de polices
  • Combinaison de positions
  • Impression en Java et Android
WINDEV
WindowsLinuxUniversal Windows 10 AppJavaEtats et RequêtesCode Utilisateur (MCU)
WEBDEV
WindowsLinuxPHPWEBDEV - Code Navigateur
WINDEV Mobile
AndroidWidget AndroidiPhone/iPadWidget IOSApple WatchMac CatalystUniversal Windows 10 App
Autres
Procédures stockées
Envoie au "buffer" d'impression la chaîne de caractères passée en paramètre.
Un saut de ligne est automatiquement inséré à la fin de la chaîne : le curseur est ainsi positionné sur la ligne suivante. Le passage à la ligne suivante tient compte de la hauteur de la ligne en cours (en fonction de la police utilisée). L'impression n'est pas lancée (seule la fonction iFinImprime permet de lancer l'impression).
Remarques :
  • Pour imprimer une chaîne de caractères sans passer à la ligne suivante, utilisez la fonction iImprimeMot.
  • La fonction iImprime ne doit pas être utilisée dans le code d'ouverture d'un état.
Exemple
iImprime(iPolice(2) + "Texte en police 2")
iSautePage()
// Nom du client sur la première ligne à 50 mm du bord
iImprime(iPosX(50) + Cl.NomCli)
iFinImprime()
Syntaxe
<Résultat> = iImprime(<Texte à imprimer> [, <Chaîne sur page suivante>])
<Résultat> : Booléen
  • Vrai si l'impression a été effectuée,
  • Faux si l'impression a été abandonnée.
<Texte à imprimer> : Chaîne de caractères
Chaîne de caractères à imprimer avec ses caractéristiques. Ce paramètre est de la forme :
[<Identifiant police> +] [<Position verticale> +] [<Position horizontale> +] <Texte1>
...
[<Identifiant police> +] [<Position verticale> +] [<Position horizontale> +] <TexteN>
où :
  • <Identifiant police> : entier optionnel.
    Identifiant de la police utilisée pour imprimer le texte. Cet identifiant est renvoyé par la fonction iPolice. Si ce paramètre n'est pas spécifié, la dernière police utilisée sera sélectionnée.
  • <Position verticale> : entier optionnel.
    Ordonnée du point où l'impression doit être effectuée. Cette position est donnée en nombre de lignes depuis le bord haut de la feuille (avec la fonction iPosY). Si ce paramètre n'est pas précisé, le texte sera imprimé à la position courante.
  • <Position horizontale> : entier optionnel.
    Abscisse du point où l'impression doit être effectuée. Cette position est donnée en nombre de colonnes depuis le bord haut gauche de la feuille (avec la fonction iPosX). Si ce paramètre n'est pas précisé, le texte sera imprimé à la position courante.
  • <Texte> : Chaîne de caractères.
    Chaîne de caractères à imprimer.
Exemple :
Texte_a_imprimer = "Première partie" + iPolice(1) + "Seconde partie"
<Chaîne sur page suivante> : Booléen optionnel
Détermine si le texte imprimé à la fin de la page doit être tronqué ou doit continuer sur la page suivante :
  • Vrai (valeur par défaut) : la chaîne sera imprimée sur la page suivante si elle ne rentre pas sur une seule page.
  • Faux : la chaîne de caractères est tronquée : la suite de la chaîne n'est pas imprimée sur la page suivante.
Remarques

Caractéristiques de l'impression

  • L'origine (0,0) est située dans le coin supérieur gauche de la feuille. Elle tient compte des marges physiques de l'imprimante.
  • La position verticale en cours lors de l'impression d'une chaîne de caractères pointe sur le haut de la chaîne. La position basse dépend de la hauteur des polices utilisées dans la ligne à imprimer.
  • Il est possible de spécifier plusieurs polices et plusieurs positions en paramètre d'une seule fonction iImprime. Par exemple :
    iImprime(iPosX(50) + CL.NOM + iPosX(150) + CL.PRENOM)
  • Le caractère correspondant à un saut de ligne (Caract(10)) est interprété comme un saut à la ligne suivante.

Combinaison de polices

Lors de la combinaison de polices, des effets inattendus peuvent être observés. Par exemple, le code :
iPolice(2)
iImprime("Première partie" + iPolice(1) + "Seconde partie")
n'est pas équivalent à :
iImprime(iPolice(2) + "Première partie" + iPolice(1) + "Seconde partie")
Dans le premier cas, toute la chaîne de caractères est imprimée en police 1. En effet, dans ce cas, la fonction iPolice(1) est exécutée lors de la construction de la chaîne à imprimer et donc avant l'impression de la chaîne "Première Partie".
Pour obtenir un résultat identique, il suffit d'utiliser la fonction iPolice avec le paramètre Faux : la fonction iPolice(1, Faux) ne sera alors réellement exécutée que lors de l'impression.

Combinaison de positions

Lors de la combinaison de positions, des effets inattendus peuvent être observés. Par exemple, le code :
iPosX(50)
iImprime("Première partie" + iPosX(30) + "Seconde partie")
n'est pas équivalent à :
iImprime(iPosX(50) + "Première partie" + iPosX(30) + "Seconde partie")
Dans le premier cas, toute la chaîne de caractères est imprimée en position horizontale 30. En effet, dans ce cas, la fonction iPosX(30) est exécutée lors de la construction de la chaîne à imprimer et donc avant l'impression de la chaîne "Première Partie".
Pour obtenir un résultat identique, il suffit d'utiliser la fonction iPosX avec le paramètre Faux : la fonction iPosX(30, Faux) ne sera alors réellement exécutée que lors de l'impression.
La même manipulation peut être réalisée avec la fonction iPosY.
Java

Impression en Java et Android

Les impressions peuvent être moins précises car la résolution des impressions est de 72 point par pouce (ppp) même si l'imprimante supporte des résolutions plus importantes.
Conséquence : Les calculs des points des images et des dessins (traits par exemple) sont arrondis durant les calculs de position en impression, en particulier lorsque l'on manipule des valeurs petites. Lors de l'impression, les calculs se font en point (en fonction de la résolution d'impression) et non en mm (ou cm).
Exemple : Impressions de traits : si les traits sont espacés de 0.5 mm, combien y a-t-il de points entre chaque trait en Java (résolution 72 ppp) ?
Le premier trait est à 0.5 mm soit (0.5/25.4) pouces et avec une résolution de 72 points par pouce (ppp) : (0.5/25.4) x 72 = 1,42 point. Mais le point est l'unité de base, il est donc indivisible : le résultat est automatiquement arrondi au 1 point inférieur ou supérieur selon le cas.
Voici donc une succession de traits imprimés avec un espace de à 0.5 mm :
  • 0.5 mm --> (1.42) 1 point
  • 1.0 mm --> (2.84) 3 points
  • 1.5 mm --> (4.25) 4 points. Attention : le trait à 1.5 mm est collé avec le trait qui est à 1 mm (sans espace entre ces deux traits)
  • 2.0 mm --> (5.67) 6 points
  • 2.5 mm --> (7.09) 7 points. Attention : le trait à 2.5 mm est collé avec le trait qui est à 2 mm (sans espace entre ces deux traits)
  • 3.0 mm --> (8.50) 9 points
  • 3.5 mm --> (9.92) 10 points. Attention : le trait à 3.5 mm est collé avec le trait qui est à 3 mm (sans espace entre ces deux traits)
  • 4.0 mm --> (11.33) 11 points. Attention : le trait à 4 mm est collé avec le trait qui est à 3.5 mm (sans espace entre ces deux traits)
  • etc.
Pour avoir une représentation fidèle (sans arrondis), la taille et / ou la position en mm pour une résolution de 72 ppp doit être un multiple de 127/360.
1 point --> (1/72) pouces --> (1/72) x 25.4 mm = 127/360 = 0.3527778 mm
Composante : wd300prn.dll
Version minimum requise
  • Version 9
Documentation également disponible pour…
Commentaires
Cliquez sur [Ajouter] pour publier un commentaire

Dernière modification : 21/06/2023

Signaler une erreur ou faire une suggestion | Aide en ligne locale