Comportement FIXER MARGE IMPRESSION dans tâche d'impression

Bonjour à tous,

J’imprime différents documents complexes avec des méthodes telles que ci dessous :

Une méthode1 qui appelle une méthode2. Ici : LIV_IMPRIMER_V2
Des marges de 18 points me conviennent bien car j’obtiens un centrage correct avec toutes les imprimantes utilisées.
Tout fonctionne parfaitement sauf lors du premier passage dans LIV_IMPRIMER_V2 les marges ne sont pas prises en compte et l’impression se fait à l’extrème gauche et extrème haut des possibilité de l’imprimante (par ex : 0 pour un pdf). Ceci bien que LIRE MARGE IMPRESSION me retourne les valeurs demandées plus haut de 18 points. Si on relance la méthode1 avec ou sans changement d’imprimante, les impressions suivantes restent correctes tant que le process en cours n’à pas été fermé.

Où est l’erreur ?

D’avance merci.

Méthode1 :

<code 4D>
PARAMÈTRES IMPRESSION(0)

Tant que (Non(Fin de sélection([Livraisons])))
CHARGER ENREGISTREMENT([Livraisons])
LIV_IMPRIMER_V2
ENREGISTREMENT SUIVANT([Livraisons])
Fin tant que
</code 4D>

Méthode LIV_IMPRIMER_V2 :

<code 4D>
C_ENTIER LONG($zoneHeight;$zoneWidth)
C_ENTIER LONG($mLeft;$mTop;$mRight;$mBottom)
C_ENTIER LONG($pageWidth;$pageHeight)
C_ENTIER LONG($interligne)
C_BOOLÉEN($imp)

// ------- Préparation zone d’impression ---------
OUVRIR TÂCHE IMPRESSION //Nouvelle tâche d’impression
FORM CHARGER([Livraisons];“Liv_Imp_V2”) // Formulaire où sont les objets type
FIXER MARGE IMPRESSION(18;18;18;18)
LIRE ZONE IMPRESSION($zoneHeight;$zoneWidth) // Taille de la zone imprimable
LIRE MARGE IMPRESSION($mLeft;$mTop;$mRight;$mBottom) // Marges fixées pour l’impression
$pageWidth:=$zoneWidth+$mLeft+$mRight // Largeur de la page
$pageHeight:=$zoneHeight+$mTop+$mBottom // Hauteur de la page
$interligne:=15
l_NumPage:=1

// Imprimer un tas de choses dans le style
$imp:=Imprimer objet(;“Ligne”)
$imp:=Imprimer objet(
;“Logo”)
// —/---

// —/---
FERMER TÂCHE IMPRESSION //Fermeture tâche et lancement impression
</code 4D>

Bonjour,

Pouvez vous me donner plus d’info
-version de 4D
-Mac/Window
-32/64bits

Patrick

Oups :oops: j’ai oublié l’essentiel

Version 17R4.235715 Windows10 64 bits

Ok,

Il faut appeler Fixer Marge Impression avant Form Load.

Dans un contexte d’impression, c’est la commande Form Load qui ouvre la page d’impression (si aucune page n’est ouverte)
C’est lors de l’ouverture de la page que les marges sont prises en compte, il faut donc les fixer avant d’appeler Form Load.

Patrick

C’était bien ça !
Merci et bonne journée.