Categories > TinyButStrong general (FR) >

[OpenTbs]Merge de templates

The forum is closed. Please use Stack Overflow for submitting new questions. Use tags: tinybutstrong , opentbs
By: Clem
Date: 2015-04-09
Time: 16:34

[OpenTbs]Merge de templates

Bonjour,

Après une journée de recherche, je viens vers vous pour essayer de trouver une solution.

Je m'explique.
J'ai un fichier nommé "headers.docx" avec plusieurs entêtes enregistrées mais pas de contenu.
En voici un exemple :
[Entete.Titre]
[Entete.Message]
Le [onshow..now;frm='dd/mm/yyyy'] à [onshow..now;frm='hh:nn:ss']
J'ai un autre fichier avec du contenu nommé "table.docx".


L'idée est de faire en sorte de générer un contenu et une entête correspondant à une configuration.

Voici mon code php, qui ne fonctionne pas :
$zip = new clsTbsZip();
$zip->Open('publipostage/opentbs/demo/headers.docx');
$tbsHeaderStr = $zip->FileRead('word/header2.xml');
$zip->Close();


// Initialize the TBS instance
$TBS = new clsTinyButStrong; // new instance of TBS
$TBS->Plugin(TBS_INSTALL, OPENTBS_PLUGIN); // load the OpenTBS plugin

$TBS->LoadTemplate('publipostage/opentbs/demo/table.docx'); // Also merge some [onload] automatic fields (depends of the type of document).

$TBS->Plugin(OPENTBS_REPLACEFILE, 'word/header1.xml',$tbsHeaderStr, $DataType=OPENTBS_STRING, $Compress=true);
$TBS->MergeField('Entete', array('Titre'=> 'ANALYSE RAPIDE','Message'=> 'Simulation, avec garantie, de 108 mois pour un montant de 22 454.00€'));

j'ai essayé la méthode de ce sujet (http://www.tinybutstrong.com/forum.php?thr=3190) mais sans succès !

Pourriez-vous m'aider ? merci d'avance
By: Skrol29
Date: 2015-04-09
Time: 23:43

Re: [OpenTbs]Merge de templates

Bonjour Clem,

Il est pratiquement impossible de reprendre le contenu d'un document dans un autre à cause des objets secondaires au document tels que les styles, images, graphiques, qui n'ont pas les même id internes d'un document à l'autre même s'il sont équivalents.
By: Clem
Date: 2015-04-10
Time: 09:19

Re: [OpenTbs]Merge de templates

Bonjour,

Merci pour la réponse rapide

Je me dis qu'il y a une autre solution moins modulable mais qui pourrait déjà faire l'affaire.
il s'agirait de faire des blocs de conditions pour afficher les entêtes.

j'ai écrit cela dans mon document docx :
[onshow;block=begin;when [var.MiseEnPage]=='Logo']
[Entete.Titre]
[Entete.Message]
Le [onshow..now;frm='dd/mm/yyyy'] à [onshow..now;frm='hh:nn:ss']

[onshow;block=end]