当前位置: 首页 > 知识库问答 >
问题:

PHPWord如何在文本运行时添加文本分隔符/新行

蒋啸
2023-03-14

如何在文本运行时添加文本分隔符或转到下一行/行?我试着只做$section-


共有3个答案

杨腾
2023-03-14

您可以在需要换行符的位置添加文本并添加\n,其余操作如下:

$text = "foo\nbar\nfoobar";
$textlines = explode("\n", $text);

$textrun = $section->addTextRun();
$textrun->addText(array_shift($textlines));

foreach($textlines as $line) {
    $textrun->addTextBreak();
    // maybe twice if you want to seperate the text
    // $textrun->addTextBreak(2);
    $textrun->addText($line);
}
楚浩然
2023-03-14

恐怕这在当前版本中是不可能的。我对这个库没有深入的了解,但是通过查看代码,我发现textRun类只包含addTextaddLink方法。

但是我也需要这个特性和其他几个特性,所以我要自己编写它,并创建一个拉请求来将它包含在下一个版本中(如果有的话)。

基本上,可以通过修改textRun类、添加addLineBreak方法(与节类中的方法类似)然后修改类Base来完成。php在最终文档中创建适当的元素。

在Docx xml中,这些行制动器类似于htmlbr标记,但是以前的文本必须关闭,并在使用像这样的中断后重新打开:

<w:r>
  <w:t>This is</w:t>
  <w:br/>
  <w:t xml:space="preserve"> a simple sentence.</w:t>
</w:r>

而不是简单地做

<w:r>
  <w:t>This is<w:br /> a simple sentence</w:t>
</w:r>

所以在base中。php,您需要编辑行为来创建此代码块。

希望这是有用的!

编辑

我发现实现这一点非常简单。在textRun中。php只需添加此方法:

/**
* Add a TextBreak Element
*
* @param int $count
*/
public function addTextBreak($count = 1) {
    for($i=1; $i<=$count; $i++) {
        $this->_elementCollection[] = new PHPWord_Section_TextBreak();
    }
}

并且在Base.php中,在该方法末尾的_writeTextRun方法中添加以下条件:

elseif($element instanceof PHPWord_Section_TextBreak) {
    $objWriter->writeElement('w:br');
}
毛越
2023-03-14

这个问题是三年前问的,但我也有同样的问题,我找到了解决办法。也许这可以帮助PHPWord的新用户。

要在Word文档中添加crlf,标签可以帮助:

$section->addText('Some text <w:br/> another text in the line ');

我在这里找到了解决办法:http://jeroen.is/phpword-line-breaks/

 类似资料:
  • 问题内容: 我正在用JavaScript 编辑。问题是当我在其中换行时,它们将不会显示。我怎样才能做到这一点? 我正在获取编写函数的值,但不会产生换行符。 问题答案: 问题来自以下事实:换行符(?)与HTML 标签不同

  • 我从一个较旧的堆栈溢出问题中找到了建议,但我在让它工作时遇到了问题。我在它们描述的地方添加了方法,但生成的word文件没有换行符(在解压后通过查看docx文件进行查看)。没有错误,因此该方法似乎在做一些我不想要的事情。我之所以这样做是因为我需要字符,我使用PHPRtfText确实可以很好地实现这一点,但在兼容性方面存在问题,而且它作为Word2007文件似乎工作得更好,所以我相应地转换了代码。虽然

  • 其中将是洛雷姆·伊普苏姆文本。对于样式: 这样做的目的是将所有文本放在头像和用户名下,而不是在用户名的一侧,并在文本溢出时添加分隔符。我该怎么做才能使文本分隔符?

  • 我正在为Prestashop编写一个模块,该模块覆盖AdminProductsController,并向BackOffice产品视图中的批量操作菜单中添加另外两个操作。这是我在重写类的构造中添加批量操作的代码 结果是这样的 我想在“删除选定项”和“导出选定项”之间添加分隔符。我的意思是,在我新添加的条目之前添加它。我怎样才能做到这一点?

  • [![我想点击Male,它反映在文本区域的Gender旁边:Male] 例如,我得到了这个脚本,我想要一个选项,当我点击按钮Male,它显示在gender旁边:在里面,如果我点击Male,它就会显示在Male旁边,就像这个Male,faleme? 文本框的图像:

  • 问题内容: 我想在现有的CSV文件中添加一行标题,并在适当位置进行编辑。我怎样才能做到这一点? 我想结束 更改初始CSV输出不方便。 任何标准命令都可以。重要的是,文件已就地编辑,并且该行插入到文件的开头。 问题答案: 这将在文件的开头添加自定义文本: