Nous utilisons des cookies pour vous garantir la meilleure expérience sur notre site. Si vous continuez à utiliser ce dernier, nous considèrerons que vous acceptez l'utilisation des cookies. J'ai compris ! ou En savoir plus !.
banniere

Le portail francophone de la géomatique


Toujours pas inscrit ? Mot de passe oublié ?
Nom d'utilisateur    Mot de passe              Toujours pas inscrit ?   Mot de passe oublié ?

Annonce

 La 5ème édition des GeoDataDays aura lieu les 14 et 15 septembre 2022 au Futuroscope de Poitiers. 

Le détail du programme et des intervenants est disponible sur le site de l'évènement.

#1 Fri 29 July 2022 17:13

conejo
Membre
Lieu: Lunel
Date d'inscription: 2 Dec 2005
Messages: 1390

QGIS: Automatiser un cadre dans un atlas

Bonjour,

J'effectue un atlas par pylône où il est demandé à chaque propriétaire de signer.

Dans la pièce jointe, voici l'expression qui permet de créer le nom des propriétaires, la signature...

' '||  '\n'  || array_to_string( array_foreach( string_to_array("concat_pro", ' - '),concat( 'Nom : ', @element||  '\n'  || '\n'  ||  'Bon pour accord le :                               Signature :')
),'\n\n\n\n\n' ) ||  '\n'  ||  '\n'  || '\n'  ||  '\n'  ||  '\n'  || 'En qualité de' || ' ' ||  case when   regexp_match(  "concat_pro"  , '-' )  then': Propriétaires' else ': Propriétaire' end  ||  '\n'  ||   '\n'  ||  case when   regexp_match(  "concat_pro"  , '-' )  then 'Reconnaissent' else 'Reconnaît' end  || ' ' || 'avoir reçu un exemplaire du présent extrait du plan parcellaire'


A l'endroit où il faut signer, serait-il possible de faire un cadre, sachant qu'il faut un cadre pour chaque propriétaire?
Merci.


Fichier(s) joint(s) :
Pour accéder aux fichiers vous devez vous inscrire.

Hors ligne

 

#2 Sat 30 July 2022 13:50

conejo
Membre
Lieu: Lunel
Date d'inscription: 2 Dec 2005
Messages: 1390

Re: QGIS: Automatiser un cadre dans un atlas

Bonjour,

Pas de possibilités?
Je vous joins ce que je voudrais par rapport à la 1ère pièce jointe


Fichier(s) joint(s) :
Pour accéder aux fichiers vous devez vous inscrire.

Hors ligne

 

#3 Mon 01 August 2022 17:46

conejo
Membre
Lieu: Lunel
Date d'inscription: 2 Dec 2005
Messages: 1390

Re: QGIS: Automatiser un cadre dans un atlas

Bonjour,

Désolé d'insister. Il n'y a pas donc de possibilités?

Hors ligne

 

#4 Tue 02 August 2022 08:44

arginet
Membre
Lieu: Lyon
Date d'inscription: 23 Feb 2017
Messages: 13

Re: QGIS: Automatiser un cadre dans un atlas

Bonjour,

Avez-vous essayer de générer vos cadre en html en utilisant, par exemple une balise <div> avec un style de bordure associé ?

par exemple : <div style="width:200px;height:100px;border:1px solid;">Contenu du cadre</div>

Hors ligne

 

#5 Tue 02 August 2022 11:37

conejo
Membre
Lieu: Lunel
Date d'inscription: 2 Dec 2005
Messages: 1390

Re: QGIS: Automatiser un cadre dans un atlas

Merci. La première expression dans un cadre texte normal est celle-ci :

' '||  '\n'  || array_to_string( array_foreach( string_to_array("concat_pro", ' - '),concat( 'Nom : ', @element||  '\n'  || '\n'  ||  'Bon pour accord le :                               [img]Signature :[/img]')
),'\n\n\n\n\n' ) ||  '\n'  ||  '\n'  || '\n'  ||  '\n'  ||  '\n'  || 'En qualité de' || ' ' ||  case when   regexp_match(  "concat_pro"  , '-' )  then': Propriétaires' else ': Propriétaire' end  ||  '\n'  ||   '\n'  ||  case when   regexp_match(  "concat_pro"  , '-' )  then 'Reconnaissent' else 'Reconnaît' end  || ' ' || 'avoir reçu un exemplaire du présent extrait du plan parcellaire'


La votre, je l'ai faite comme ceci :

' '||  '\n'  || array_to_string( array_foreach( string_to_array("concat_pro", ' - '),concat( 'Nom : ', @element||  '\n'  || '\n'  ||  'Bon pour accord le :                               [img]<div style="width:200px;height:100px;border:1px solid;"> Signature :</div>[/img] ')
),'\n\n\n\n\n' ) ||  '\n'  ||  '\n'  || '\n'  ||  '\n'  ||  '\n'  || 'En qualité de' || ' ' ||  case when   regexp_match(  "concat_pro"  , '-' )  then': Propriétaires' else ': Propriétaire' end  ||  '\n'  ||   '\n'  ||  case when   regexp_match(  "concat_pro"  , '-' )  then 'Reconnaissent' else 'Reconnaît' end  || ' ' || 'avoir reçu un exemplaire du présent extrait du plan parcellaire'


Le résultat : cela encadre bien au niveau de la signature comme en pj, mais il n'y a plus de saut à la ligne entre "nom" et "bon pour accord", et le texte après "Signature" a disparu.

Comment faire pour garder les espacements et sauts à la ligne comme dans la 1ère pièce jointe et rajouter l'encadrement de la signature?
Merci.


Fichier(s) joint(s) :
Pour accéder aux fichiers vous devez vous inscrire.

Hors ligne

 

#6 Tue 02 August 2022 12:15

conejo
Membre
Lieu: Lunel
Date d'inscription: 2 Dec 2005
Messages: 1390

Re: QGIS: Automatiser un cadre dans un atlas

Je re-édite ma réponse.

Merci. La première expression dans un cadre texte normal est celle-ci :

' '||  '\n'  || array_to_string( array_foreach( string_to_array("concat_pro", ' - '),concat( 'Nom : ', @element||  '\n'  || '\n'  ||  'Bon pour accord le :                               Signature :')
),'\n\n\n\n\n' ) ||  '\n'  ||  '\n'  || '\n'  ||  '\n'  ||  '\n'  || 'En qualité de' || ' ' ||  case when   regexp_match(  "concat_pro"  , '-' )  then': Propriétaires' else ': Propriétaire' end  ||  '\n'  ||   '\n'  ||  case when   regexp_match(  "concat_pro"  , '-' )  then 'Reconnaissent' else 'Reconnaît' end  || ' ' || 'avoir reçu un exemplaire du présent extrait du plan parcellaire'


La votre, avec un cadre en HTML, je l'ai faite comme ceci :

' '||  '\n'  || array_to_string( array_foreach( string_to_array("concat_pro", ' - '),concat( 'Nom : ', @element||  '\n'  || '\n'  ||  'Bon pour accord le :                               <div style="width:200px;height:100px;border:1px solid;"> Signature :</div> ')
),'\n\n\n\n\n' ) ||  '\n'  ||  '\n'  || '\n'  ||  '\n'  ||  '\n'  || 'En qualité de' || ' ' ||  case when   regexp_match(  "concat_pro"  , '-' )  then': Propriétaires' else ': Propriétaire' end  ||  '\n'  ||   '\n'  ||  case when   regexp_match(  "concat_pro"  , '-' )  then 'Reconnaissent' else 'Reconnaît' end  || ' ' || 'avoir reçu un exemplaire du présent extrait du plan parcellaire'


Le résultat : cela encadre bien au niveau de la signature comme en pj, mais il n'y a plus de saut à la ligne entre "nom" et "bon pour accord", et le texte après "Signature" a disparu.

Comment faire pour garder les espacements et sauts à la ligne comme dans la 1ère pièce jointe et rajouter l'encadrement de la signature?
Merci.

Hors ligne

 

#7 Tue 02 August 2022 15:00

conejo
Membre
Lieu: Lunel
Date d'inscription: 2 Dec 2005
Messages: 1390

Re: QGIS: Automatiser un cadre dans un atlas

Donc il y a un souci de retour à la ligne.
La balise  '\n'  n'a pas l'air de fonctionner en HTML

Hors ligne

 

#8 Wed 03 August 2022 16:59

arginet
Membre
Lieu: Lyon
Date d'inscription: 23 Feb 2017
Messages: 13

Re: QGIS: Automatiser un cadre dans un atlas

Votre expression doit renvoyer du texte formaté en html.

Pour ajouter un retour à la ligne simple, utilisez la balise <br>. Voir la doc ici : https://developer.mozilla.org/fr/docs/W … Element/br

Vous pourriez également définir des paragraphes avec les balises <p></p>(https://developer.mozilla.org/fr/docs/Web/HTML/Element/p), ce qui vous permettra de paramétrer un style qui leur sera associé. Le style peut être paramétré soit directement dans le code html (comme pour le <div> que vous avez utilisé), soit en css dans le cadre "Feuille de style utilisateur" proposé par QGis.

Les possibilités de formatage en html/css sont nombreuses. Si vous êtes souvent confrontés à des problématiques de mise en forme de vos cadres de texte, il peut être intéressant de vous familiariser avec les bases de ces deux langages...

Hors ligne

 

#9 Wed 03 August 2022 17:51

conejo
Membre
Lieu: Lunel
Date d'inscription: 2 Dec 2005
Messages: 1390

Re: QGIS: Automatiser un cadre dans un atlas

Merci pour votre réponse.
Voici l'expression que j'ai modelé d'après vos conseils, sans résultat :

<p>array_to_string( array_foreach( string_to_array("concat_pro", ' - '),concat( 'Nom : ', @element <br>
'Bon pour accord le :                               <div style="width:200px;height:100px;border:1px solid;">Signature :</div>')) <br>
'En qualité de' <br>
case when   regexp_match(  "concat_pro"  , '-' )  then': Propriétaires' else ': Propriétaire' end  <br>
case when   regexp_match(  "concat_pro"  , '-' )  then 'Reconnaissent' else 'Reconnaît' end   'avoir reçu un exemplaire du présent extrait du plan parcellaire'
</p>


Procedè-je bien?

Hors ligne

 

#10 Wed 03 August 2022 19:16

FB33
Membre
Date d'inscription: 6 Jul 2022
Messages: 5

Re: QGIS: Automatiser un cadre dans un atlas

Bonjour,

Et ceci, ça ne donne rien de mieux ? (modif du html seulement)

Code:

' '||  '\n'  || array_to_string( array_foreach( string_to_array("concat_pro", ' - '),concat( 'Nom : ', @element||  '\n'  || '\n'  ||  'Bon pour accord le :<div style="width:200px; height:100px; border:1px solid; float: right;"> Signature :</div>')
),'\n\n\n\n\n' ) ||  '\n'  ||  '\n'  || '\n'  ||  '\n'  ||  '\n'  || 'En qualité de' || ' ' ||  case when   regexp_match(  "concat_pro"  , '-' )  then': Propriétaires' else ': Propriétaire' end  ||  '\n'  ||   '\n'  ||  case when   regexp_match(  "concat_pro"  , '-' )  then 'Reconnaissent' else 'Reconnaît' end  || ' ' || 'avoir reçu un exemplaire du présent extrait du plan parcellaire'

Dernière modification par FB33 (Fri 05 August 2022 15:36)

Hors ligne

 

#11 Fri 05 August 2022 09:53

arginet
Membre
Lieu: Lyon
Date d'inscription: 23 Feb 2017
Messages: 13

Re: QGIS: Automatiser un cadre dans un atlas

conejo a écrit:

Merci pour votre réponse.
Voici l'expression que j'ai modelé d'après vos conseils, sans résultat :

<p>array_to_string( array_foreach( string_to_array("concat_pro", ' - '),concat( 'Nom : ', @element <br>
'Bon pour accord le :                               <div style="width:200px;height:100px;border:1px solid;">Signature :</div>')) <br>
'En qualité de' <br>
case when   regexp_match(  "concat_pro"  , '-' )  then': Propriétaires' else ': Propriétaire' end  <br>
case when   regexp_match(  "concat_pro"  , '-' )  then 'Reconnaissent' else 'Reconnaît' end   'avoir reçu un exemplaire du présent extrait du plan parcellaire'
</p>


Procedè-je bien?


Je pense qu'il vous manque les opérateurs de concaténation : ||.

Les balises html ne sont pas interprétées au sein de l'expression qgis mais dans le cadre html du composeur. Il faut donc que l'expression qgis renvoie une chaine de caractères qui, elle, sera interprétée comme du html.

Vous remarquerez, par ailleurs, que vous pouvez insérer plusieurs expressions différentes dans le cadre html (pour les éléments dynamiques) et écrire directement en html les éléments invariables de votre texte.

Voici une proposition de code à insérer directement dans le cadre html. J'ai inséré deux expressions différentes pour renvoyer les parties dynamiques du texte (la liste des propriétaires et cadres de signatures d'une part, la mention finale d'autre part). Tout le reste est écrit "en dur" dans le cadre html.

Code:

<p>
[%array_to_string(
    array_foreach(
        string_to_array("concat_pro", ' - '),
        concat( 'Nom : ', @element, '<br>Bon pour accord le : <div style="width:200px;height:100px;border:1px solid;">Signature :</div>')),
    delimiter:='<br>')%] </p>
<p>En qualité de
[%case
    when   regexp_match(  "concat_pro"  , '-' )  then ' propriétaires, reconnaissent'
    else ' propriétaire, reconnait' end%]
avoir reçu un exemplaire du présent extrait du plan parcellaire'
</p>

J'espère que cela pourra vous aider à aboutir au résultat que vous souhaitez.

Hors ligne

 

#12 Fri 05 August 2022 12:16

FB33
Membre
Date d'inscription: 6 Jul 2022
Messages: 5

Re: QGIS: Automatiser un cadre dans un atlas

Arginet me semble avoir une compréhension globale de "truc", ce qui est loin d'être mon cas... Cependant, concernant exclusivement le html, je me permets une ou deux remarques qui pourraient aider :

- pour que le cadre de signature s'affiche à droite, il faut impérativement y ajouter, comme dans mon message précédant un élément de style "float:right;"  (ou passer par un tableau)
- un tag DIV dans un P, ça ne se fait pas trop... Préférer un SPAN
...

=> Un truc comme ça ? :

Code:

<p style="width:95%; height:120px";>
[%array_to_string(
    array_foreach(
        string_to_array("concat_pro", ' - '),
        concat( 'Nom : ', @element, '<br><br>Bon pour accord le : <span style="width:200px;height:95px;border:1px solid; float:right;">&nbsp;Signature :</span>')),
    delimiter:='<br><br>')%] </p>
<p>En qualité de
[%case
    when   regexp_match(  "concat_pro"  , '-' )  then ' propriétaires, reconnaissent'
    else ' propriétaire, reconnait' end%]
avoir reçu un exemplaire du présent extrait du plan parcellaire.'
</p>

EDIT :  désolé, j'avais lamentablement confondu ma droite (right) et ma gauche (left)

Dernière modification par FB33 (Fri 05 August 2022 15:37)

Hors ligne

 

#13 Sat 06 August 2022 01:04

conejo
Membre
Lieu: Lunel
Date d'inscription: 2 Dec 2005
Messages: 1390

Re: QGIS: Automatiser un cadre dans un atlas

Je vous remercie de vos apports. Je suis actuellement en congés sans avoir la possibilité vérifier tout cela. Je reviens vers vous à partir du mardi 23 août. Bonnes vacances !

Hors ligne

 

Pied de page des forums

Powered by FluxBB

Partagez  |