6

我正在使用 PHPWord 加载 docx 模板并替换{test}. 这工作得很好。

但我想用 html 代码替换一个值。无法将其直接替换到模板中。据我所知,现在有办法使用 PHPWord 做到这一点。

我看着htmltodocx。但它似乎也不起作用,是否可以将代码的和平转换为<p>Test<b>test</b><br>test</p>有效的文档标记?我只需要基本代码,不需要样式。但是换行符必须起作用。

4

4 回答 4

7

这是github的链接。它工作正常Html-Docx-js

它也是这里的演示。

其他选项是这个Link

 $toOpenXML = HTMLtoOpenXML::getInstance()->fromHTML("<p>te<b>s</b>t</p>");
    $templateProcessor->setValue('test', $toOpenXML);
于 2015-05-06T12:51:34.683 回答
3

其他答案提出仅支持的H2OXML

  • 粗体、斜体和下划线文本

  • 项目符号列表

如他们的文档中所述,他们的最后一次更新是在 2012 年。

我做了一些研究,发现了一个很好的解决方案:

$var = 'Some text';
$xml = "<w:p><w:r><w:rPr><w:strike/></w:rPr><w:t>". $var."</w:t></w:r></w:p>";

$templateProcessor->setValue('param_1', $xml);

上面的示例显示了删除文本的方式。代替“w:strike”,您可以使用“w:i”表示斜体或“w:b”粗体,依此类推。不确定它是否适用于所有标签。

于 2016-07-27T16:21:16.290 回答
2

谢谢你的回答,瓦伦。

简单的 PHP 库 H2OXML 对我有用https://h2openxml.codeplex.com/

$toOpenXML = HTMLtoOpenXML::getInstance()->fromHTML("<p>te<b>s</b>t</p>");
$templateProcessor->setValue('test', $toOpenXML);

我现在可以转换 html 代码以使用 PHPWord 插入它。

于 2015-05-07T08:27:25.247 回答
1

$内容 = '<p>Test<b>test</b><br>test</p>';

在 IOFactory::createWriter() 之前使用它;

\PhpOffice\PhpWord\Shared\Html::addHtml($section, $content);
于 2018-07-03T09:36:03.873 回答