如何在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)
我使用 "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)