PHP/OpenTBS/DocX 嵌套数组/子块

PHP/OpenTBS/DocX nested arrays / subblock

实际测试 opentbs 以根据我网站上的模板生成 docx。我在整合图像时遇到问题。 我成功地在循环中添加了图像,但我的问题是将它们集成到嵌套循环中。

我有一个天数对象数组,里面有一个图像路径数组(每天都有额外的数据)

我的数据模式是这样的:

// 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]```

实际上,在输出文件中,我的子块是这样显示的,没有被解释。

我查看了这个解决方案 ,但结尾部分有点奇怪,而且只使用 [steps2_sub1;block=end]

OpenTBS 文档没有给出带有块的子块的完整示例。

有没有人看出我误解了什么?

编辑:我的子块不起作用,显示为 "code" 且未被解释。

谢谢,

马修

我在您的代码段中发现了 2 个错误。

1) TBS区分大小写。

所以片段:

[STEPS2.DAY;SUB1=IMAGES]

应替换为:

[steps2.day;sub1=images]

2)参数'sub1'是一个块参数,所以它应该只定义在有参数'block'的字段中。否则忽略。

所以片段:

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

应替换为:

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

看来 TBS 是 space 敏感的:我在开始块中的 sub1 分号前有一个 space(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%  ]

有没有可能达到这样的效果?