如何在phpword中添加textbreak?

时间:2015-11-10 15:06:12

标签: php phpword

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

如何为此问题添加换行符?例如,我有以下文字:

代码(在变量中):

"这是
文字
使用换行符"

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

"这是一个包含换行符的文字。"

我该怎么做?我希望word文档中的文字具有这种风格:

这是
文字
换行

谢谢!

4 个答案:

答案 0 :(得分:0)

使用phpword无法做到这一点。您必须将字符串拆分为行并使用addTextBreak

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

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

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

答案 1 :(得分:0)

我遇到了同样的问题,但随后改变了模板文件。实际上无法添加换行符,setValue函数仅适用于普通字符串。

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

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

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

答案 2 :(得分:0)

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 );

答案 3 :(得分:0)

最简单的解决方案是在字符串中用 '' 替换 '/n'

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