如何在phpword中添加一个textbreak?

How to add a textbreak in phpword?

我使用 "phpword" class 生成 .doc 文件,但我遇到了问题:

如何为这个问题添加换行符?例如,我有以下文本:

代码(在变量中):

“这是
一段文字
带换行符

现在,如果我们将其输入到 word 文档中...将显示:

"This is a text With line break."

我该怎么做?我想要 word 文档中的文本具有这种样式:

这是
一段文字
带换行符

谢谢!

这对于 phpword 是不可能的。您必须将字符串拆分成行并使用 addTextBreak.

<?php
$text = "This is
a text
With line break";

$lines = explode("\n", $text);

foreach ($lines as $line) {
    $doc->addText($line);
    $doc->addTextBreak();
}

我遇到了同样的问题,但后来更改了模板文件。确实不可能添加换行符,setValue 函数仅适用于普通字符串。

但是如果你想尝试一个脏修复,你可以添加以下行到 Template.php @line 91:

$replace = preg_replace('~\R~u', '</w:t><w:br/><w:t>', $replace);

它很脏,因为您不确定最后一个标签是 <w:t> 标签;它可能是别的东西。但这在大多数情况下都可以解决问题:它将换行符 \n 替换为 Word 用于换行的 <w:br> 标记。

function add_entered_text( $textrun, $text, $par1, $par2  ){

  $textlines = explode("\n", $text);
  $textrun->addText(array_shift($textlines), $par1, $par2);
  foreach($textlines as $line) { 
      $textrun->addText($line, $par1, $par2);
  }

}

示例:

add_entered_text( $section, $text1, $header, $style );

add_entered_text( $section, $text2, null, $style );

add_entered_text( $table->addCell(4000, $cellRowSpan), $text3, null, $style );

最简单的解决方案是将字符串中的“/n”替换为“

str_replace("\n", '<w:br/>', $text)