使用PHP和PHPWord将HTML代码转换为doc

时间:2015-05-06 12:35:51

标签: php html openxml phpword

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

但我想用html代码替换一个值。不可能直接将其替换为模板。据我所知,现在有使用PHPWord的方法。

我看了htmltodocx。但它接缝它也无法工作,是否可以将像<p>Test<b>test</b><br>test</p>这样的代码和平转换为有效的doc标记?我只需要基本代码,没有样式。但是Linebreaks必须有效。

4 个答案:

答案 0 :(得分:8)

这是github的链接。它工作得很好Html-Docx-js

该演示也可用here

其他选项是此Link

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

答案 1 :(得分:3)

其他答案建议H2OXML仅支持

  • 粗体,斜体和带下划线的文字

  • Bulled list

如他们的文档所述,他们的最新更新是在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:i”表示斜体或“w:b”粗体,而不是“w:strike”,等等。不确定它是否适用于所有标签。

答案 2 :(得分:2)

感谢您的回答,Varun。

简单的PHP库H2OXML适用于我https://h2openxml.codeplex.com/

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

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

答案 3 :(得分:0)

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

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

\PhpOffice\PhpWord\Shared\Html::addHtml($section, $content);