因此,我将开始给出一些上下文,在我的实际项目中,我试图使用一个名为OpenTBS的库来生成一个动态列到一个odt中,我遵循了文档,它给了我这个错误:
在块的定义
TinyButStrong错误b.thin.:至少找不到一个对应于tbs的标记。检查开始标记、结束标记和嵌入级别。
TinyButStrong Error Show()方法:由于至少发生了一个错误,OpenTBS插件取消了输出。
我的代码如下所示:
<?php
include_once('tbs_class.php');
include_once('plugins/tbs_plugin_opentbs.php');
$TBS = new clsTinyButStrong;
$TBS->Plugin(TBS_INSTALL, OPENTBS_PLUGIN);
$TBS->LoadTemplate('template.odt',OPENTBS_ALREADY_UTF8);
$data = array(
array('date' => '2013-10-13', 'thin' => 156, 'heavy' => 128, 'total' => 284),
array('date' => '2013-10-14', 'thin' => 233, 'heavy' => 25, 'total' => 284),
array('date' => '2013-10-15', 'thin' => 110, 'heavy' => 412, 'total' => 130),
);
$TBS->MergeBlock('b', $data);
// $TBS->Plugin(OPENTBS_DEBUG_INFO, true);
$output_file_name ="test_download.odt";
$TBS->Show(OPENTBS_DOWNLOAD, $output_file_name);
?>template.odt,看起来是这样的:
------------------------------------------------
|Category | [b.date] |
|Thin | [b.thin;block=td;parallel=tbs:table] |
|Heavy | [b.heavy] |
|Total | [b.total] |
------------------------------------------------因此,对于我测试过的内容,我得出的结论是,这个错误来自于odt,这里的b.thin;block=td;parallel=tbs:table,是这个部分的具体部分:block=td (block=td),因为当我使用block=td时,它不会下载odt,它只显示错误,但是当我试图将block=td更改为 to :cellE 215时,worked.The的问题是它不迭代数组,它只显示第一个数组:
-------------------------------------------------
|Category | 2013-10-13 |
|Thin | 156 |
|Heavy | 128 |
|Total | 284 |
--------------------------------------------------实际上,输出应该是这样的:
-------------------------------------------------
|Category | 2013-10-13 | 2013-10-14 | 2013-10-15 |
|Thin | 156 | 233 | 110 |
|Heavy | 128 | 25 | 412 |
|Total | 284 | 284 | 130 |
--------------------------------------------------如果有人知道发生了什么,请告诉我!
谢谢!
发布于 2022-10-14 06:43:40
好的,所以我想我找到了一个解决方案,在odt中,它写着block=td (在我的例子中),我不得不将它更改为block=tbs:cell,它起了作用。
https://stackoverflow.com/questions/74055660
复制相似问题