如何在PHPWord中为传入的HTML添加样式

How to add styles to incoming HTML in PHPWord

在 phpword 中,我看到您过去可以将样式数组传递给 addHTML 函数,但现在不行了。

如果我的 HTML 没有设置任何内嵌样式,有没有办法指定 fontStyle 和 paragraphStyle,这样它就不会在 Word 文件中以普通 'Arial 10pt' 结束?

我在调用 addHTML:

之前通过设置默认样式取得了一些成功
$phpWord->setDefaultFontName('...');
$phpWord->setDefaultFontSize('...');
$phpWord->setDefaultParagraphStyle('...');

但是,这不是一个完整的字体样式。例如,您将如何更改文本的颜色?

按照 doc 会是这样的:

// New document
$phpWord = new \PhpOffice\PhpWord\PhpWord();
// New empty section
$section = $phpWord->addSection();
// Set font-styles
$fontStyle = new \PhpOffice\PhpWord\Style\Font();
$fontStyle->setName('Tahoma');
$fontStyle->setSize(13);
// Adding text and font-styles to the section
$myTextElement = $section->addText("Bla bla bla");
$myTextElement->setFontStyle($fontStyle);

这样您就可以将 $fontStyle 用作您创建的所有文本的默认样式。

似乎最通用的解决方案实际上是在调用 addHTML() 之前将样式直接添加到您的 html。像...

$html = str_replace("<p>", 
    "<p style='font-size: 10pt; font-family: Arial; color:#595959; line-height: 140%; margin-bottom: 160pt;'>", 
    $html);

只需添加例如默认字体 示例:

$phpWord->setDefaultFontName('Times New Roman');
$phpWord->setDefaultFontSize(12);