Impression page blanche 4D Write - Zone hors ecran

Product :4D Write
OS : Mac OS X

Bonjour à tous
C’est encore moi, en ce moment il m’arrive pas mal de soucis :confused:

Cette fois-ci, je n’arrive pas a imprimer correctement une zone 4D
Write Hors Ecran, qui est sensé contenir une image PNG
L’impression m’imprime une page blanche

<code 4D>

//je stock mon image dans une variable (pas forcemment utile mais plus
simple pour m’expliquer)
$image:=[maTable]monChampImage

//Je me créer un zone hors ecran comme ceci :
zone:=WR Hors ecran

//Puis je met l’image dans la zone
WR IMAGE VERS ZONE (zone;$image)

//Puis j’essaye d’imprimer dans un PDF
WR EXECUTER COMMANDE (zone;wr cmd références)
WR FIXER OPTION IMPRESSION (zone;wr option destination;wr vers fichier
PDF;0;System folder(Desktop)+“test”) //je suis sur MAC
WR IMPRIMER (zone;wr impression valeurs;1)

//Je détruit la zone
WR DETRUIRE HORS ECRAN(zone)
</code 4D>

Je précise que :

  • monChampImage contient bel et bien une image au format .png
    J’ai vérifié en faisant ceci :

WRITE PICTURE FILE(System
folder(Desktop)+“imageDeMerde”;[maTable]monChampImage;".PNG")

  • j’ai essayé de modifier l’impression en mettant “wr impression valeurs”/“wr impression references”

  • J’ai lu un sujet un peu similaire mais plus complexe auquel Arnaud à répondu, j’ai essayé de m’en inspirer mais sans succès

Avez vous des solutions à me proposer SVP ?

Merci de relire la doc http://doc.4d.com/4Dv16/4D-Write/16/WR-IMAGE-VERS-ZONE.301-3205867.fr.htmlWR IMAGE VERS ZONE> il semble que vous confondez le champ image contenant un doc 4D Write et un champ image contenant simplement une image ce n’est pas la même chose…

Il faut créer une zone hors écran d’un doc 4D Write et y insérer l’image (ou ça référence).

La bonne commande c’est http://doc.4d.com/4Dv16/4D-Write/16/WR-INSERER-CHAMP.301-3205879.fr.htmlWR INSERER CHAMP > (ou http://doc.4d.com/4Dv16/4D-Write/16/WR-INSERER-VARIABLE.301-3205880.fr.htmlWR INSERER VARIABLE>) :wink:

Merci de ne pas me prendre pour un idiot ^^

J’ai oublié de le préciser précédemment mais mon champ contenait bel et bien une image d’un 4Dwrite. Peut etre que le champ à mal été enregistrer par contre, ce n’est pas moi qui ai créer cette méthode d’enregistrement (et c’est surement ca, puisqu’avec un autre moyen ca marche).
J’ai finalement trouvé la solution, je l’explique demain afin d’aider d’éventuelles personnes ayant ce soucis

Mais merci quand meme, ca me donne d’autres idée pour la suite :slight_smile:

C’est peut-être moi qui ait mal compris, mais quand vous faites ceci :

: Bastien ROUSSEL

<code 4D>

//je stock mon image dans une variable (pas forcemment utile mais
plus simple pour m’expliquer)
$image:=[maTable]monChampImage

//Je me créer un zone hors ecran comme ceci :
zone:=WR Hors ecran

//Puis je met l’image dans la zone
WR IMAGE VERS ZONE (zone;$image)

</code 4D>

ou encore cela :

: Bastien ROUSSEL

Je précise que :

  • monChampImage contient bel et bien une image au format .png
    J’ai vérifié en faisant ceci :
    WRITE PICTURE FILE(System
    folder(Desktop)+“imageDeMerde”;[maTable]monChampImage;".PNG")</blockqu
    te2>

J’ai quand même de forts doutes sur ce que vous faites… :roll:

S’il s’agit dans les 2 cas d’un même champ contenant une simple image cela ne peut pas fonctionner ainsi ! :twisted:

Ah oui je vois ce que vous voulez dire.
J’ai juste résumé trop rapidement mon stockage d’image, car il était inutile de vous copier/coller la longue méthode permettant de stocker le 4Dwrite dans un champ.

En gros j’ai une methode que l’on appelera “maMethode” qui permet de stocker un 4Dwrite dans un png
Dans un formulaire, un fois que l’on a tapé le texte dans le 4Dwrite, on clique sur valider pour l’enregistrer. Au clic sur le bouton valider on execute ce bout de code (je simplifie) :
<code 4D>
[maTable]monChampImage:=maMethode(maVariable4Dwrite) //Dans le champ on stock le 4D write en PNG

</code 4D>
Voila en gros ce qu’il se passe, et j’ai résumé pour simplifier l’explication

Je pense avoir trouvé l’erreur, mais je n’y touche pas, c’est assez complexe, et la méthode est appelé à beaucoup d’endroit différents.

La solution la plus simple c’est de créer un champ qui s’appelle comme le 4D write dans la base de donnée
Par exemple, la variable 4Dwrite s’appelle “Lettre”. Il faut créer dans la table liée, un champ (Blob ou Image) nommé “Lettre_” (ne pas oublier le underscore) dans lequel le 4Dwrite se sauvegardera automatiquement, sans aucun code supplémentaire.
Ainsi, on est sur que l’enregistrement se fait correctement et on peu mettre l’image dans une zone hors ecran

Merci quand meme pour la réponse :slight_smile:

À vous lire, pardon :pray:, mais j’ai encore l’impression que ce n’est pas clair pour vous, il faut bien distinguer la zone 4D Write et une image (par exemple PNG).

C’est vrai que le langage 4D ne vous simplifie pas la tâche, car il utilise de multiples termes parfois maladroits (voir qui ne s’appliquent plus) Normalement, on n’utilise plus de champ image pour stocker une zone 4D Write (C’était le cas dans le temps, cela peut encore fonctionner, mais ce n’est PAS une image qui est stockée dans le champ !)

Il est préférable d’utiliser un blob (avec le nouveau 4D Write Pro maintenant c’est un objet).

Maintenant si l’on revient sur ce que vous voulez faire, le but c’est quoi ? d’imprimer une image PNG ou d’imprimer une zone 4D Write avec une simple image insérer dedans ? ou encore d’imprimer une zone 4D Write (existante ou créée à la volée) qui contient entre autres une image PNG ?

Pour répondre correctement à votre demande, il faut préciser (sans TROP simplifier) ce que vous voulez faire.

On peut imprimer directement une image sans passer par une zone 4D Write, on peut imprimer une zone 4D Write (créée hors écran) y insérer une image et l’imprimer tout cela sans jamais avoir enregistré cette zone dans une table.

La question est dans votre cas : ai-je besoin de stocker une image PNG ou une zone 4D Write ?

Bastien,
(en présupposant que tu es un djeune, sinon inutile de lire le 1/)

1/ quand j’étais petit, 4d n’enregistrait les documents 4d write que dans des champs image. D’une part il n’y avait pas de champ blob, d’autre part, 4d pouvait afficher une vue réduite (http://doc.4d.com/4Dv16/4D-Write/16/WR-Zone-vers-image.301-3205869.fr.htmlcf. prévisualisation>) du document, genre on pleurait à tenter de lire des chiures de mouches. Puis 4D a ajouté la possibilité de stocker dans un blob, c’est pour ça qu’il y a 2 paires de commandes stocker/déstocker, l’une pour le champ image, l’autre pour le blob. Je pense que ça n’a plus aucun intérêt de stocker en image.

2/ concernant le stockage automatique dans un champ nommé “nomDeLaZoneWrite_”.
C’est pratique, mais, comme c’est stocké dans l’enregistrement de [maTable], si un utilisateur (qui-est-le-mal) colle, par exemple, un bon gros logo, l’enregistrement [maTable] deviendra très très lent.
Comme le plugin 4D write est en fin de vie, il faut garder en tête que ce stockage n’en a http://doc.4d.com/4Dv16/4D/16/Stocker-les-documents-4D-Write-Pro-dans-des-champs-objet-4D.200-3048087.fr.htmlplus pour longtemps>.

le langage 4D […] utilise de multiples termes parfois maladroits
Bin voilà, tout s’éclaire : Euphémisme est grand et Manuel est son prophète.

D’accord, et bien reprenons depuis le début alors :slight_smile:

Dans la base, j’ai besoin de stocker des lettres-modeles : c’est une lettre qui va se créer automatiquement en allant chercher par exemple, nom et prenom d’un client.
Les modèles sont évidemment déjà créés dans la base. Il me reste plus qu’a faire “Nouveau Courrier” et de choisir dans la liste proposé un modèle. Puis, je sélectionne un client à qui envoyer le courrier, et ma lettre-modele se remplie automatiquement en ajoutant toutes les informations du client. --> TOUTE CETTE PARTIE EST FONCTIONNELLE

J’ai besoin de stocker dans la base, des zone 4D write. Sauf qu’un autre développeur les as stockés dans un champ image
Puis (pour une raison que j’ignore) il a stocké ca dans un blob. Donc techniquement, le blob et le champ image contiennent la même chose. Je n’ai absolument aucune idée de pourquoi ceci à été fait (c’est le probleme d’avoir des développeurs qui viennent s’occuper d’un logiciel de temps en temps…)

Donc en gros le but :

  • imprimer un 4Dwrite qui contient du texte, et peut-etre des images, selon les modèles créés.
  • quand je clique sur “imprimer”, je ne veux voir apparaitre que la fenetre d’options d’impression, rien d’autre

Voila ce que je dois faire
(désolé, c’est pas toujours évident de se faire comprendre sur les forums :frowning: )
Merci de l’intérêt que vous portez à ma demande, vraiment !!

: Arnaud DE MONTARD

(en présupposant que tu es un djeune, sinon inutile de lire le 1/)
Ahah très bonne présupposition. Mdr.

1/ Tres bien, merci pour l’historique, je ne le savais pas, c’est toujours bon à savoir :slight_smile: En lisant la doc, je remarque souvent plusieurs commandes ressemblante, et je me doute bien que ca à des raisons historiques, mais come je débute, je ne les connait pas

2/ Techniquement (de ce qu’on m’en a dit) il ne devrait pas y avoir trop d’images dans les zone 4Dwrite
Je sais bien que le 4Dwrite est en fin de vie, malheureusement, pour l’instant, je dois faire avec cette contrainte. 4Dwrite Pro n’est pas encore envisagée

Et merci bien pour ta réponse :smiley:

Du coup à supposer que l’image de la zone soit encore d’actualité (elle n’est peut-être plus maintenue :idea:) votre code aurait dû fonctionner. Peut-être que justement le bon champ c’est plutôt le champ blob qui est maintenant utilisé et plus le champ image…

Garder les 2 n’a effectivement aucun intérêt !

Essayez le même code mais simplement en utilisant le champ blob via la commande http://doc.4d.com/4Dv16/4D-Write/16/WR-BLOB-VERS-ZONE.301-3205866.fr.htmlWR BLOB VERS ZONE>