PHP / OpenTBS / DocX вложенные массивы / подблоки - PullRequest
0 голосов
/ 17 мая 2018

На самом деле тестирование opentbs для генерации docx на основе шаблона с моего сайта.Я столкнулся с проблемой интеграции изображений.Мне удалось добавить изображения в цикл, но моя проблема - объединить их во вложенный цикл.

У меня есть массив дней Object и внутри этого массива путь к изображениям (с дополнительными данными в каждом дне)

Моя схема данных выглядит следующим образом:

// Initialisation du Parser
$TBS = new clsTinyButStrong;
$TBS->Plugin(TBS_INSTALL, OPENTBS_PLUGIN);

// Chargement du fichier Modèle
$TBS->LoadTemplate(realpath(dirname(__FILE__)).'/tbs/rendu-v2.docx', OPENTBS_ALREADY_UTF8);

$steps = array(
  stdClass {
    day: 'day 1',
    name: 'My 1st step',
    images: array(
      'pathToMyFirstImage',
      'pathToMySecondImage'
    )
  },
  stdClass {
    day: 'day 2 & 3',
    name: 'My 2st step',
    images: [
      'pathToMyThirdImage',
      'pathToMyFourthImage'
    ]
  }
);

$TBS->MergeBlock( 'steps2', $steps);
$TBS->Show(OPENTBS_DOWNLOAD);

В моем шаблоне слова:

[steps2;block=begin]
  JOUR [steps2.day;sub1=images] : [steps2.name]
  [steps2.date]

  [steps2.description]

  [steps2_sub1; block=begin]
    [X] (picture with [steps2_sub1.val;ope=changepic;tagpos=inside] as text sustitution)
  [steps2_sub1; block=end]
[steps2; block=end]```

На самом деле, в выходном файле мой субблок отображается так, а не

Я смотрел на это решение OpenTBS - Как использовать двойной цикл , но конечная часть немного странная и не работает ни с одним [steps2_sub1;block=end].

Документ OpenTBS не дает полного примера субблоков с блоком.

Кто-нибудь видит, что я неправильно понимаю?

РЕДАКТИРОВАТЬ: мой подблок не работает и отображается как «код» и не интерпретируется.

Спасибо,

Матье

Ответы [ 2 ]

0 голосов
/ 22 мая 2018

Похоже, что TBS чувствителен к пробелам: у меня был пробел перед точкой с запятой sub1 в моем блоке начала (MS Word добавляет его автоматически на языке FR).

Рабочий код следующий:

[steps2;block=begin;sub1=images]
[STEPS2.DAY] : [STEPS2.NAME]
[steps2.date]

[steps2.description;strconv=no]

[X] <- Image with "[steps2_sub1.val;ope=changepic;tagpos=inside;block=tbs:p]" as Text Replacement

[steps2;block=end]

Спасибо всем

Кстати, как я могу управлять различными способами отображения моих фотографий?У меня будет от 0 до 4 картинок, которые будут отображаться так:

|    My Page     |
|                |
| Case 1 image   |
[   100% Width   ]
|                |
| Case 2 images  |
[  50%  ][  50%  ]
|                |
| Case 3 images  |
[  50%  ][  50%  ]
[      100%      ]
|                |
| Case 4 images  |
[  50%  ][  50%  ]
[  50%  ][  50%  ]

Можно ли добиться чего-то подобного?

0 голосов
/ 17 мая 2018

Я вижу 2 ошибки в вашем фрагменте.

1) TBS чувствителен к регистру.

Поэтому фрагмент:

[STEPS2.DAY;SUB1=IMAGES]

следует заменить на:

[steps2.day;sub1=images]

2) параметр 'sub1' является параметром блока, поэтому его следует определять только в поле, в котором есть параметр 'блок'.В противном случае он игнорируется.

Таким образом, фрагмент:

[steps2;block=begin]
[steps2.day;sub1=images]

следует заменить на:

[steps2;block=begin;sub1=images]
[steps2.day]
...