Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/231.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHPWord HTML到Word设计问题_Php_Phpword - Fatal编程技术网

PHPWord HTML到Word设计问题

PHPWord HTML到Word设计问题,php,phpword,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->sa

我正在使用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');
我面临以下问题:

  • 我使用内联样式应用背景色和字体颜色,但字体颜色只起作用,而背景色不起作用 一些文本

  • 我使用下面的HTML代码在HTML模板的各个部分中允许分页符。但它在导出的Word文件中不起作用
  • 
    
  • 我使用span标记以粗体标记一些单词或更改段落中单词的颜色。但当我导出到Word文件时,span标记后面的内容会移到Word下面的新行。我尝试在span标记中使用display:inlinecss属性。但它不起作用
  • span标记前的某些文本XXXXX span标记后的文本

    编辑:


    如果上面提到的问题无法用PHPWord解决,请推荐我可以用来将带有内联css的HTML转换为Word的任何其他库

    我刚刚执行了一个非常简单的测试,它工作正常。我的代码与您的代码几乎完全相同,只是我告诉系统将其编写为Word文档,而不是HTML

    使用phpooffice\PhpWord\PhpWord;
    使用PhpOffice\PhpWord\Shared\Html;
    需要一次目录/供应商/autoload.php';
    $htmlTemplate='

    ; $phpWord=新phpWord(); $section=$phpWord->addSection(); Html::addHtml($section,$htmlTemplate); $targetFile=\uuuuu DIR\uuuuuu。“/1.docx”; $phpWord->save($targetFile,'Word2007');

    产生:

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

    $targetFile=\uuuu DIR\uuuuu。“/1.html”;
    $phpWord->save($targetFile,'HTML');
    
    一个问题/主题中有很多内容。因此,我将根据您列举的设计问题来回答:

    背景色 您可以通过以下方式渲染背景色:

    $table_style=array('bgColor'=>'ffffff00');
    $section=$phpWord->addSection();
    $table=$section->addTable($table\u样式);
    $table->addRow();
    $cell=$table->addCell();
    \PhpOffice\PhpWord\Shared\Html::addHtml($cell,$htmlTemplate);
    
    分页符 来自文档的代码似乎不支持html代码中的分页符。但是,通过隐式调用,您可以在节内呈现分页符,如下所示:

    $section=$phpWord->addSection();
    \PhpOffice\PhpWord\Shared\Html::addHtml($section,$someHTMLcode);
    $section->addPageBreak();
    $section->addText(“一些纯文本”);
    $section->addPageBreak();
    
    意外的内联文本中断 也许您可以尝试用
    替换一些
    空格,如下所示:

    span标记前的某些文本XXXXX span标记后的文本


    我希望其中一些——如果不是全部的话——可能对你有用。祝你好运

    正如您在上所看到的,您不能使用背景色。当我们使用PHPWord语法在Word中添加内容时,此处列出的样式适用。但我有HTML模板,我正在转换为word。所以我不能使用这些样式!是的,很抱歉,请参阅样式列表。是的,我看到了此文件,在调试时,在函数parseStyle中,当我在返回之前在函数末尾打印$styles时,样式属性在那里正确打印。但我不知道之后会发生什么错误,这并没有反映在文档中。我注意到的一点是,背景颜色与标记一起工作,而与或标记无关!谢谢你,克里斯!它解决了我的第一个和第三个问题。仍然分页符在我生成的文档中不起作用。所以,若你们对此有任何想法,请指导我。我也通过phpword中的一些定制解决了分页符问题。所以没有必要再看这个问题了!!
     <p style="background-color:#FFFF00;color:#FF0000;">Some text</p>
    
    <div style="page-break-after:always"><span style="display:none">&nbsp;</span></div>
    
    <p>some text before span tag <span style="color:#FF0000;display:inline">XXXXX</span> Text after span tag.</p>