PHPWord how to add text break / new line while in a text run
format, line, php, phpword
Solution
I'm afraid that this will not be possible with current version. I don't have deep understanding of this library, but from looking at the code, I found out that the `textRun` class consist only of `addText` and `addLink` methods.
But I also need this feature along with several others, so I'm going to write it myself and create a pull request to get it included in the next release (if there will be any).
Basically it can be done by modifying the `textRun` class, adding an `addLineBreak` method (similar way as it is in the section class) and then modify class `Base.php` to create proper elements in final document.
In Docx xml, those line brakes are similar to the html `br` tag, but previous text must be closed and reopened after using break like this:
<w:r>
<w:t>This is</w:t>
<w:br/>
<w:t xml:space="preserve"> a simple sentence.</w:t>
</w:r>
instead of simply doing
<w:r>
<w:t>This is<w:br /> a simple sentence</w:t>
</w:r>
So in `base.php`, you'll need to edit behavior to create this block of code.
Hope this was useful!
EDIT
I have figured out that implementing this is very simple. In `textRun.php` just add this method:
/**
* Add a TextBreak Element
*
* @param int $count
*/
public function addTextBreak($count = 1) {
for($i=1; $i<=$count; $i++) {
$this->_elementCollection[] = new PHPWord_Section_TextBreak();
}
}
and in `Base.php` in the `_writeTextRun` method at the end of this method add this condition:
elseif($element instanceof PHPWord_Section_TextBreak) {
$objWriter->writeElement('w:br');
}
Problem
How can I add a text break or go to the next line/row while in a text run? I tried to just do `$section->addTextBreak(2);` while in the text run but it just added the breaks to the section after the text run. I also tried `$textrun->addTextBreak(2);` but it gave me a fatal error. Any responses would be greatly appreciated.