我正在使用 PHPWord 库将 HTML 模板转换为 Word。
我将 HTML 转换为 Word 文件的代码如下:
$phpWord = new \PhpOffice\PhpWord\PhpWord();
$section = $phpWord->addSection();
\PhpOffice\PhpWord\Shared\Html::addHtml($section, $htmlTemplate);
$targetFile = __DIR__ . "/1.docx";
$phpWord->save($targetFile, 'HTML');
Run Code Online (Sandbox Code Playgroud)
我面临以下问题:
<p style="background-color:#FFFF00;color:#FF0000;">Some text</p>
Run Code Online (Sandbox Code Playgroud)
<div style="page-break-after:always"><span style="display:none"> </span></div>
Run Code Online (Sandbox Code Playgroud)
<p>some text before span tag <span style="color:#FF0000;display:inline">XXXXX</span> Text after span tag.</p>
Run Code Online (Sandbox Code Playgroud)
编辑:
如果上述问题无法用 PHPWord 解决,请推荐任何其他库,我可以使用它来将带有内联 css 的 HTML 转换为 Word!
我刚刚进行了一个非常简单的测试,它工作正常。我的代码与您的几乎完全相同,只是我告诉系统将其编写为 Word 文档,而不是 HTML。
use PhpOffice\PhpWord\PhpWord;
use PhpOffice\PhpWord\Shared\Html;
require_once __DIR__ . '/vendor/autoload.php';
$htmlTemplate = ' <p style="background-color:#FFFF00;color:#FF0000;">Some text</p>';
$phpWord = new PhpWord();
$section = $phpWord->addSection();
Html::addHtml($section, $htmlTemplate);
$targetFile = __DIR__ . "/1.docx";
$phpWord->save($targetFile, 'Word2007');
Run Code Online (Sandbox Code Playgroud)
其产生:
如果您将保存模式更改为HTML,背景颜色确实会消失,但无论如何它不再是 Word 文档,只是原始 HTML,所以我认为这并不重要。
$targetFile = __DIR__ . "/1.html";
$phpWord->save($targetFile, 'HTML');
Run Code Online (Sandbox Code Playgroud)