Problème envoi Write pro format htmll

Bonjour,

v17.1 32 bit
OSX 10.12.6

Lors de l’envoi par email d’une zone 4D Write pro au format html avec la commande suivante :
<code 4D>
WP EXPORTER VARIABLE($Zone_WP;$Corps_WP;wk page web html 4D)
</code 4D>
l’entête et le pied de page ne sont pas repris.
Existe-t-il une solution ?

Merci

Pascal Aubert

Bonjour,

En version 17R4 32 bit, l’entête est présent sans l’image qu’il y avait mais pas le pied de page.
Donc je dirais que l’on progresse avec les version.
Il va falloir attendre la v18 !!!

Pascal Aubert

Bonjour,

pour répondre à votre question, j’aurais besoin de plus de précisions.

Les entêtes (et les pieds) dependent de la mise en page.

Les entêtes sont répétés à chaque page sauf si on a précisé en-ête de première page.
Et il est également possible d’avoir des entêtes différenciés pour la page de droite ou de gauche.
Idem pour les pieds de page.

Et tout ça répété (pas forcément à l’identique) par section.
Bref, ce n’est pas (forcément) simple.


Maintenant vous voulez simplement un doc avec un (seul) entête, suivi du body, suivi d’un (seul) pied, c’est assez simple.

La version longue donnerait ça :

<code 4D>
C_OBJECT($header;$body;$footer)
C_OBJECT($headerRange;$bodyRange;$footerRange)
C_OBJECT($headerDocument;$bodyDocument;$footerDocument)
C_OBJECT($target)

wpArea:=WP New
$target:=WP Create range(wpArea;wk start text;wk end text)

$header:=WP Get header([TEST]doc;1) // get the header of first section (;1)
If ($header#Null)
$headerRange:=WP Create range($header;wk start text;wk end text) // creates a range using this reference
$headerDocument:=WP New($headerRange) // creates a new document from this range
WP INSERT DOCUMENT($target;$headerDocument;wk append;wk include in range) //insert the document in the target
End if

$body:=WP Get body([TEST]doc)
$bodyRange:=WP Create range($body;wk start text;wk end text)
$bodyDocument:=WP New($bodyRange)
WP INSERT DOCUMENT($target;$bodyDocument;wk append;wk include in range)

$footer:=WP Get footer([TEST]doc;1)
If ($footer#Null)
$footerRange:=WP Create range($footer;wk start text;wk end text)
$footerDocument:=WP New($footerRange)
WP INSERT DOCUMENT($target;$footerDocument;wk append;wk include in range)
End if

WP EXPORT DOCUMENT(wpArea;“export.html”;wk web page complete)

</code 4D>

Ça a le mérite d’être clair, mais il est totalement inutile de créer autant de variables de type objet…
Voila la version courte :

<code 4D>
C_OBJECT($o)
C_OBJECT($target)

$target:=WP New
$target:=WP Create range($target;wk start text;wk end text)

$o:=WP Get header([TEST]doc;1) // get the header of first section (;1)
If ($o#Null)
WP INSERT DOCUMENT($target;WP New(WP Create range($o;wk start text;wk end text));wk append;wk include in range)
End if

$o:=WP New(WP Create range(WP Get body([TEST]doc);wk start text;wk end text))
WP INSERT DOCUMENT($target;WP New(WP Create range(WP Get body([TEST]doc);wk start text;wk end text));wk append;wk include in range)

$o:=WP Get footer([TEST]doc;1)
If ($o#Null)
WP INSERT DOCUMENT($target;WP New(WP Create range($o;wk start text;wk end text));wk append;wk include in range)
End if

WP EXPORT DOCUMENT($target.owner;“export.html”;wk web page complete) // NOTA BENE : $target.owner

</code 4D>

Enfin, si vous étiez en v17R5 (ce qui ne semble pas etre le cas), le code pourrait encore être simplifié car on peut utiliser directement un document (et non plus obligatoirement un range) pour faire l’insertion.
Plus besoin donc de créer un range “pour rien”…

<code 4D>
C_OBJECT($o)
C_OBJECT($target)

$target:=WP New

$o:=WP Get header([TEST]doc;1) // get the header of first section (;1)
If ($o#Null)
WP INSERT DOCUMENT($target;WP New(WP Text range($o;wk start text;wk end text));wk append;wk include in range)
End if

$o:=WP New(WP Text range(WP Get body([TEST]doc);wk start text;wk end text))
WP INSERT DOCUMENT($target;WP New(WP Text range(WP Get body([TEST]doc);wk start text;wk end text));wk append;wk include in range)

$o:=WP Get footer([TEST]doc;1)
If ($o#Null)
WP INSERT DOCUMENT($target;WP New(WP Text range($o;wk start text;wk end text));wk append;wk include in range)
End if

WP EXPORT DOCUMENT($target;“export.html”;wk web page complete) // NOTA BENE : $target direct (c’est un document)

</code 4D>

Bonne journée !

Roland Lannuzel

Cela fonctionne avec votre code.
Merci.

Merci de votre retour.
(c’est toujours motivant pour nous ! )

Bonne journée.

  1. implementiert mit 4D v16 R5.
    https://blog.4d.com/4d-v16-r5-beta-starts-today/
    (scrollen bis SUPPORT OF PICTURE EXPRESSIONS)

  2. noch nicht implementiert

: Thomas MAUL

1) implementiert mit 4D v16 R5.
Danke - hatte ich übersehen. Gleich getestet und es funktioniert besser als mit 4D Write (Größeneinstellungen werden korrekt gesichert)!

: Thomas MAUL
  1. noch nicht implementiert
    Schade - vielleicht wird´s ja noch was mit v17…

Danke für die Info
Peter Grün

: Thomas MAUL
  1. noch nicht implementiert

Das automatische Speichern der Einstellungen nicht - ok.
Aber ich habe gerade die Befehle “Get action info” und “Invoke Action” “entdeckt” (R3/R4).
Mit diesen Befehlen kann ich z.B. den Status des Lineals oder den Ansichtsmodus auslesen und wieder setzen - also genau das, was ich will.
So langsam wird 4D Write Pro brauchbar :slight_smile: