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

时间:2018-05-17 12:20:08

标签: php docx opentbs

实际上测试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]```

实际上,在输出文件中,我的子块显示为此而不是解释。

我查看了这个解决方案OpenTBS - How to use a double loop,但是结尾部分有点奇怪,只有[steps2_sub1;block=end]无效。

OpenTBS doc没有提供带有块的子块的完整示例。

有人看到我误解的内容吗?

编辑:我的子块不起作用,显示为“代码”而不解释。

谢谢,

马修

2 个答案:

答案 0 :(得分:0)

我可以在你的代码段中看到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]

答案 1 :(得分:0)

似乎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%  ]

有可能实现这样的目标吗?