PHPWord HTML 到 Word 设计问题

Khu*_*hbu 1 php phpword

我正在使用 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)

我面临以下问题:

  1. 我正在使用内联样式应用背景颜色和字体颜色,但字体颜色仅起作用,背景颜色不起作用。
 <p style="background-color:#FFFF00;color:#FF0000;">Some text</p>
Run Code Online (Sandbox Code Playgroud)
  1. 我使用下面的 HTML 代码来允许在 HTML 模板的各个部分中分页。但它不适用于导出的 Word 文件。
<div style="page-break-after:always"><span style="display:none">&nbsp;</span></div>
Run Code Online (Sandbox Code Playgroud)
  1. 我正在使用 span 标签以粗体标记某些单词或更改段落中单词的颜色。但是当我导出到Word文件时,span标签后的内容会移动到单词下方的新行。我尝试在span标签中使用display:inline css属性。但它不起作用。
<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!

Chr*_*aas 5

我刚刚进行了一个非常简单的测试,它工作正常。我的代码与您的几乎完全相同,只是我告诉系统将其编写为 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)

其产生:

显示在 Word 文档中正确应用所请求的背景和前景文本的屏幕截图

如果您将保存模式更改为HTML,背景颜色确实会消失,但无论如何它不再是 Word 文档,只是原始 HTML,所以我认为这并不重要。

$targetFile = __DIR__ . "/1.html";
$phpWord->save($targetFile, 'HTML');
Run Code Online (Sandbox Code Playgroud)